我这个案例里不是采用zTree默认的async进行异步加载,而是在onExpand事件里用ajax请求数据,
然后再动态的添加子节点,代码如下:
var setting = { data: { keep: { parent: true, } }, callback: { onExpand: expandNode, beforeExpand: beforeExpand, }, }; //展开节点 var parentNode = null; function expandNode(e, b, node) { if (node.AppID != null) { parentNode = node; $.ibo.crossOrgin({ url: "url", funcName: "function", data: "data", success: function (res) { if (res.ResFlag == $.ResFlag.Success) { if (res.ResObj && res.ResObj.List && res.ResObj.List.length > 0) { var newNodes = []; $.each(res.ResObj.List, function (i, n) { newNodes.push({ name: n.Decription, icon: "../../img/icon.png" }); }); var treeObj = $.fn.zTree.getZTreeObj("treeDiv"); treeObj.addNodes(parentNode, newNodes); } } } }); } }; function beforeExpand(e, node) { var treeObj = $.fn.zTree.getZTreeObj("treeDiv"); parentNode = node; treeObj.removeChildNodes(parentNode); };