var ztreeNodes = [];
var toshownodeslist = new Object();
var toshownodesArray = [];
var checknodes =[];
var checknodeids =[];
var treeObj;
function makeStationTree(node_type){
//树的销毁
treeObj = $.fn.zTree.getZTreeObj("tree_station");
treeObj.destroy();
//隐藏所有树节点
treeObj = null;
$.fn.zTree.init($("#tree_station"), setting_station, ztreeNodes);
treeObj = $.fn.zTree.getZTreeObj("tree_station");
var allNode = treeObj.transformToArray(treeObj.getNodes());
for(var i = 0;i < allNode.length;i++){
allNode[i].nocheck = true;
treeObj.updateNode(node);
}
treeObj.hideNodes(allNode);
//显示当前类型及父亲节点
var nodelist = treeObj.getNodesByParamFuzzy("node_type",node_type,null);
for(var n = 0;n<nodelist.length;n++){
toshownodeslist[[Number(nodelist[n].id)]] = nodelist[n];
checknodes.push(nodelist[n]);
findParent(treeObj,nodelist[n]);
}
$.each(toshownodeslist,function (key,val) {
toshownodesArray.push(toshownodeslist[key]);
})
treeObj.showNodes(toshownodesArray);
//toshownodeslist = [];
toshownodeslist = new Object();
toshownodesArray = [];
checknodeids =[];
//显示的节点再过滤哪些有checkbox
var treeObj = $.fn.zTree.getZTreeObj("tree_station");
for(var i=0;i<checknodes.length;i++){
var node = checknodes[i];
node.nocheck = false;
treeObj.updateNode(node);
checknodeids[i] = node.id;
}
checknodes = [];
}
function findParent(treeObj,node){
//treeObj.expandNode(node,true,false,false);
var pNode =node.getParentNode();
if(pNode!=null){
//toshownodeslist.push(pNode);
toshownodeslist[[Number(pNode.id)]] = pNode;
findParent(treeObj,pNode);
}
}
涉及到几个点:
ztree隐藏函数hide()
ztree节点nocheck属性
ztree查找父亲节点,避免出现同一父亲几点多次放入数组,使用var toshownodeslist = new Object();
toshownodeslist[[Number(pNode.id)]] = pNode;
可以保证唯一性,同一id多次赋值,后面覆盖前面的
涉及Object转正数组[]
$.each(toshownodeslist,function (key,val) {
toshownodesArray.push(toshownodeslist[key]);
})