一般来说ztree都是利用id ,name ,parentid,来作为组合树的,但是我们也是可以改变这个三个参数的,比如,可能我们定义的是
menuid,menuname,menuparentid,所以下面获取id,name,parentid时,都是采用的动态的方式,并不是平常我们使用的arr[i].id之类的 function search (a) { var treeid = $(a).parent().next().children().attr("id"); var zTreeObj = $.fn.zTree.getZTreeObj(treeid); var nodes = zTreeObj.transformToArray(zTreeObj.getNodes()); //, for(var i = 0;i < nodes.length; i++){ var node = nodes[i]; if //var hideNode = zTreeObj.getNodeByParam("isHidden", true); var childKey = $(a).parent().next().children().attr("data-childKey"); var nameKey = $(a).parent().next().children().attr("data-nameKey"); var parentKey = $(a).parent().next().children().attr("data-parentKey"); // function filterFunc(node){ var key = $(a).prev().val(); var nodeId = getValueByKey(childKey,node); var nodeName = getValueByKey(nameKey,node); // // if(node.isParent){ // if(node.level == 0){ //; if(nodeName.indexOf(key) != -1){ return false; }else,true,false var the = ifHaveC(nodeId,key,nodes,childKey,nameKey,parentKey); if(the){ return false; }else{ return true; } return true; } // }else{ //; if(nodeName.indexOf(key) != -1){ return false; }else{ //,true,false var the1 = ifHaveC(nodeId,key,nodes,childKey,nameKey,parentKey); if(the1){ return false; } // var the2 = ifHaveP(nodeId,key,nodes,childKey,nameKey,parentKey); if(the2){ return false; } return true; } } // }else{ // if(node.level == 0){ if(nodeName.indexOf(key) != -1){ return false; }else{ return true; } } // var the = ifHaveP(nodeId,key,nodes,childKey,nameKey,parentKey); if(the){ return false; }else{ if(nodeName.indexOf(key) == -1){ return true;// }else{ return false; } } } }; // var hiddenNodes1=[]; // //truenode hiddenNodes1=zTreeObj.getNodesByFilter(filterFunc); // zTreeObj.hideNodes(hiddenNodes1); }; //idkeytruefalse function ifHaveP (id,key,all,childKey,nameKey,parentKey){ var obj = new Array();;// var theId = id; var parentid; for(var n = 0;n < 5;n++){ for(var i = 0; i < all.length; i++){ if(getValueByKeyArray(childKey,all,i) == theId){ parentid = getValueByKeyArray(parentKey,all,i);//id if(parentid != undefined || parentid != null){ obj.push(parentid); } var name = qName(parentid,all,childKey,nameKey); if(name != undefined || name != null){ obj.push(name); } theId = parentid; } } } var the = false; for(var i = 0; i < obj.length; i++){ var s = obj[i].toString() if(s.indexOf(key) != -1){ the = true; } } return the; } function qName(id,all,childKey,nameKey){ for(var i = 0; i < all.length; i++){ if(getValueByKeyArray(childKey,all,i) == id){ return getValueByKeyArray(nameKey,all,i); } } } //idnametruefalse function ifHaveC (id,key,all,childKey,nameKey,parentKey){ var obj = new Array();// obj.push(id); for(var n = 0; n < 5; n++){ for(var i = 0; i < all.length; i++){ for(var j = 0; j < obj.length; j++){ if(getValueByKeyArray(parentKey,all,i) == obj[j]){ obj.push(getValueByKeyArray(childKey,all,i)); obj.push(getValueByKeyArray(nameKey,all,i)); } } } } var the = false; for(var j = 0; j < obj.length; j++){ var a = obj[j].toString(); if(a.indexOf(key) != -1){ the = true; } } return the; }jsonkeyvalue值 */ function for(var key in node) { if (key == thekey) { return node[key]; } } return null; } /** * jsonkeyvalue值 */ function getValueByKeyArray (thekey, nodes ,row){ if(nodes.length == 0){ return null; } for(var iffor(var ifreturn return null; }文章来源: zTree过滤