jquery ztree異步搜索


一、初始異步加載樹

    初始化默認給出一個根結點,再結合異步加載的方式手動觸發默認加載第一層,如圖:

代碼如下:
var treeSetting = {
  async: {
  enable: true, url:"xxx/demo.do?method=listByTree",
  dataType:"json",
  autoParam:["id=pid"]
  },
  view: {
  dblClickExpand: true,
  selectedMulti: false,
  expandSpeed: ($.browser.msie && parseInt($.browser.version)<=6)?"":"fast"
  },
  data: {
    simpleData: {
      enable:true,
      idKey: "id",
      pIdKey: "pid",
      rootPId: "root"
    }
  },
  callback: {
    onNodeCreated: zTreeOnNodeCreated
  }
};

//默認根結點
var rootNode = {"id":0, "pid":"root", "name":"商品分類", "open":true, "isParent":true};

$(document).ready(function(){
  var zTreeObj = $.fn.zTree.init($("#tree"), treeSetting, rootNode);
  var node = zTreeObj.getNodeByParam("id", 0, null);
  zTreeObj.reAsyncChildNodes(node, "refresh");
});

二、異步搜索葉子結點

    在使用JQuery ZTREE時可能要用到異步的方式模糊搜索葉子結點,如圖:

    而如果只使用ZTREE自帶的展開方法zTreeObj.expandNode只是會展開改結點,無法觸發異步加載;這時候就必須手動調用異步加載的方法進行處理,解決思路如下:    
    通過在otherParam數組中設值的方式將搜索參數帶到后台(無參數時必須將otherParam設為空數組否則一直會將前一次的參數帶到后台);在結點創建完成后的回調函數onNodeCreated中進行手動異步加載。

代碼如下:

function searchM() {
  var param = $.trim($("input[name='param']").val());
  var treeObj = $.fn.zTree.getZTreeObj("tree");
  var node = treeObj.getNodeByParam("id", 0, null);
  if(param != ""){
    param = encodeURI(encodeURI(param));
    treeObj.setting.async.otherParam=["param", param];
  }else {
    //搜索參數為空時必須將參數數組設為空
    treeObj.setting.async.otherParam=[];
  }
  treeObj.reAsyncChildNodes(node, "refresh");
}

function zTreeOnNodeCreated(event, treeId, treeNode) {
  var param = $.trim($("input[name='param']").val());
  var treeObj = $.fn.zTree.getZTreeObj("tree");
  //只有搜索參數不為空且該節點為父節點時才進行異步加載
  if(param != "" && treeNode.isParent){
    treeObj.reAsyncChildNodes(treeNode, "refresh");
  } 
};

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM