zTree模糊查询(仅保留符合查询条件节点及其所有父节点)
2017-07-17 15:29
507 查看
var hiddenNodes=[]; //用于存储被隐藏的结点 var showNoddesTreeId = []; // 用于保存显示那些有子节点符合查询条件的父节点的treeId //获取符合查询条件的总函数 function filter(){ if($('#keyword').val()!=""){ //获取input中的查询条件 var _keywords = $("#keyword").val(); //清空需要从隐藏节点的数组中删除的父节点的treeId数组 showNoddesTreeId = []; //显示上次搜索后被隐藏的结点 departmenttree.data.zTreePlugin.showNodes(hiddenNodes); //清空暂存的父节点(其第一层子节点中没有符合查询条件的节点) var nodesTreeId = []; // 遍历某节点的所有子节点函数 function getAllChildInfo(node){ // 初始化用来标识本次查询的node是否符合查询条件的值为'' nodeKey = ''; // 如果该节点为父节点,并且节点名称不符合查询条件的 if(node.isParent && node.name.indexOf(_keywords) == -1){ // 用来判断this node是否为模糊查询结果中的一员初始化为2,如果是变为1 outerloop: //命名外圈语句 for(var i = 0; i < node.children.length; i++) { while(node.children[i].name.indexOf(_keywords) != -1) { nodeKey = '1'; break outerloop; } nodesTreeId.push(node.treeId); getAllChildInfo(node.children[i]); } } // 如果该节点符合查询条件(不管是父节点还是子节点) else if(node.name.indexOf(_keywords) != -1) { nodeKey = '1'; } // 根据上面的判断执行完后,如果nodeKey的值为'1' while(nodeKey == '1') { // 去重复制数组 nodesTreeId 到数组showNoddesTreeId for(var i = 0, j = nodesTreeId.length; i < j; i++) { if(showNoddesTreeId.indexOf(nodesTreeId[i]) == -1) { showNoddesTreeId.push(nodesTreeId[i]); } } // 最后返回false,表示该node符合查询条件 return false; } // 如果nodeKey !='1',就清空暂存的父节点,返回true nodesTreeId = []; return true; } //获取根节点 var rootTreeNode = departmenttree.data.zTreePlugin.getNodeByParam('treeId', '00'); // 接收需要隐藏的节点,从根节点开始过滤 查询条件( 自定义过滤器函数,查找节点集合,从根节点开始查) hiddenNodes = departmenttree.data.zTreePlugin.getNodesByFilter(getAllChildInfo, false, rootTreeNode); if(hiddenNodes.length != null) { // 两层for循环,将符合查询条件节点的所有父节点从隐藏数组中删除 for(m = 0; m < hiddenNodes.length; m++) { for(n = 0; n < showNoddesTreeId.length; n++) { if(hiddenNodes[m].treeId == showNoddesTreeId ) { hiddenNodes.splice(m, 1); // 从M开始删除1个对象 } } } } // 隐藏节点 departmenttree.data.zTreePlugin.hideNodes(hiddenNodes); // 展开全部 departmenttree.data.zTreePlugin.expandAll(true); } if($('#keyword').val()==""){// 查询条件删除后 $.fn.zTree.init($("#departmentTree"),departmenttree.setting,departmenttree.data.data); var treeRoot=departmenttree.data.zTreePlugin.getNodeByParam("treeId","00"); // 缺省展开根节点后面的第一级节点 departmenttree.data.zTreePlugin.expandNode(treeRoot,true,false); // 缺省选择根节点 departmenttree.data.zTreePlugin.selectNode(treeRoot); // 传值 departmenttree.data.treeNode=treeRoot; } }
备注:
departmenttree.data.zTreePlugin.是树加载完后获得的对象。
相关文章推荐
- ztree模糊查询,只保留查询到的节点
- 你真的会玩SQL吗?查询指定节点及其所有父节点的方法
- 【ztree系列】树节点的模糊查询
- 查询指定节点及其所有子节点的函数
- SQL SERVER 2005中查询指定节点及其所有子节点的方法
- thinkphp5多条件模糊查询以及多条件查询带分页如何保留参数
- C#实现listview 模糊查询 并且使符合条件的选中首个
- SQL SERVER 2005中查询指定节点及其所有父节点的方法
- BOM之一------------查询指定节点及其所有子节点-------------------
- SQL SERVER 2000中查询指定节点及其所有子节点的函数
- zTree模糊查询,匹配则显示父子节点,否则隐藏
- postgresql数据库使用函数查询所有符合条件的表名,以及删除所有查询到的表的数据
- ztree模糊查询选中节点
- MyBatis--关联关系查询--自关联--一对多--查询指定父节点及其所有子
- mysql给列的属性赋值,修改列属性,删除记录,删除所有记录,查询表的记录,去除重复的,总和查询,条件查询,模糊查询,关联查询,范围查询
- MSSQL 查询所有节点及其所有子节点的函数
- SQL---查询树中某个节点及其所有子节点
- 查询指定节点及其所有子节点的函数
- 天天SQL(查询所有子节点及其函数的练习)
- php中mysql一条sql语句查询出所有符合条件的数据,该怎么写?