以下主要实现的是ztree模糊搜索节点和精确查找的功能,模糊搜索在数据量较小时效率可以,但是在大批量几万节点时速度卡顿明显,因此使用精确匹配的方式。
1.ztree节点模糊搜索匹配
showFilterResult:function (value) { var treeObj = $.fn.zTree.getZTreeObj("tree"); var allNode = treeObj.transformToArray(treeObj.getNodes());; treeObj.hideNodes(allNode); nodeList = treeObj.getNodesByParamFuzzy("name", value, null);//使用节点的name作为查询参数 nodeList = treeObj.transformToArray(nodeList); for(var n in nodeList){ findParent(treeObj,nodeList[n]); } treeObj.showNodes(nodeList); if (value == "") { treeObj.expandAll(false); } function findParent(treeObj,node){ treeObj.expandNode(node,true,false,false); var pNode = node.getParentNode(); if(pNode != null){ //递归得到指定节点的父节点的父节点....直到根节点 nodeList.push(pNode); findParent(treeObj,pNode); } } }
2.精确查找节点
var _keywords = searchField.val();
var node=zTreeObj.getNodeByParam('namekey',_keywords,null);
if(node){
zTreeObj.selectNode(node,false);
}else{
zTreeObj.cancelSelectedNode();
}