首頁  >  文章  >  web前端  >  Jquery zTree 樹​​控制非同步載入操作_jquery

Jquery zTree 樹​​控制非同步載入操作_jquery

WBOY
WBOY原創
2016-05-16 15:13:361291瀏覽

zTree 是利用 JQuery 的核心程式碼,實作一套能完成大部分常用功能的 Tree 外掛程式

  • 相容於 IE、FireFox、Chrome 等瀏覽器
  • 在一個頁面內可同時產生多個 Tree 實例
  • 支援 JSON 資料
  • 支援一次性靜態產生 和 Ajax 非同步載入 兩種方式
  • 支援多種事件回應及回饋
  • 支援 Tree 的節點移動、編輯、刪除
  • 支援任意更換皮膚 / 個人化圖示(依賴css)
  • 支援極具彈性的 checkbox 或 radio 選擇功能
  • 簡單的參數配置實作 靈活多變的功能

非同步載入的意思是: 當點擊展開樹節點時,才去請求後台action返回點擊節點的子節點資料並載入。

這裡面主要設計ztree的setting變數的async屬性設定:

var setting = {
  async: {
   enable: true,
   url:InitServiceIpsData.action,
   autoParam:[id, name],
   dataFilter: filter  
  },
 

當點擊展開樹節點時,會請求url指定的action取得子節點數據,然後綁定到ztree上。

注意這裡後台action回傳的是JSON字串,而ztree綁定新的節點資料只接收數組,所以需要在綁定前用filter函數進行資料清洗轉換操作,將字串轉換為數組:

//过滤异步加载ztree时返回的数据 
 function filter(treeId, parentNode, childNodes) {
  if (!childNodes) 
   return null;  
  childNodes = eval((+childNodes+)); //必须转换为[{id:103,pId:1,name:'子节点3'}];这样的格式 
  return childNodes;
 }

這樣點選展開ztree樹節點時,就會請求action取得子節點資料並綁定了。 

下面是後台action的一個實作:

public String InitServiceIpsData()
 {
  HttpServletRequest request = ServletActionContext.getRequest();
  String id = request.getParameter(id);
  String name = request.getParameter(name);
  System.out.println(请求获取+name+的ip列表);
   
  List<hashmap<string,object>> list = new ArrayList<hashmap<string,object>>();   
  for(int i = 1; i <= 2; i++){ 
   HashMap<string,object> hm = new HashMap<string,object>();   
   hm.put(id, id + 0 + i);
   hm.put(pId, id);
   hm.put(name, name + _IP_ + i);
   hm.put(isParent, false);
   list.add(hm);
  } 
   
  JSONArray finalJson = JSONArray.fromObject(list);
  this.initServiceIpsData = finalJson.toString();
  return SUCCESS;
 }</string,object></string,object></hashmap<string,object></hashmap<string,object>
 

以上就是Jquery zTree 樹​​控制實現非同步載入操作的詳細步驟,希望對大家的學習有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn