easyui tree实现模糊查询树节点并高亮显示

it2025-08-09  8

需求:

在查询框中输入关键字,按回车键,查询树中所有相关的节点,展开查到结果的文件夹,并将结果高亮显示。效果如下图:

实现:

<div class="easyui-tabs" data-options="fit:true"> <!-- 查询工具 --> <div title="脚本管理"> <div class="zTreeDemoBackground left"> 。。。 </div> </div> <div title="元数据" class="metaDbInfoTree" > <input class="easyui-searchbox" data-options="searcher:searchDept,prompt:'请输入表名称'" id="searchText" onchange="resetTreeNode()" style="width: 186px; height: 32px;"></input> <ul id="metaDbInfo" class="easyui-tree"> </ul> </div> <div title="任务列表"> 。。。 </div> <div title="脚本缓存"> 。。。 </div> </div> function searchDept(){ var parentNode=$('#metaDbInfo').tree('getRoots'); //得到tree顶级node var searchCon = $("#searchText").val(); var children; for(var i=0;i<parentNode.length;i++){ //循环顶级 node children = $('#metaDbInfo').tree('getChildren',parentNode[i].target);//获取顶级node下所有子节点 if(children){ //如果有子节点 for(var k=0;k<children.length;k++){ //循环所有子节点 var subchildren = $('#metaDbInfo').tree('getChildren',children[k].target); // if($('#metaDbInfo').tree('isLeaf',children[j].target)){ } //判断子级是否为叶子节点,即不是父节点 for(var j=0;j<subchildren.length;j++) { //循环所有子节点 if (subchildren[j].text.indexOf(searchCon) >= 0) { //判断节点text是否包含搜索文本 ||children[j].id.indexOf(searchCon)>=0 if (subchildren[j]){ $('#metaDbInfo').tree('update', { target: subchildren[j].target, text: "<span style='color:red;'>"+ subchildren[j].text+"</span>" }); } // selectNode(subchildren[j]); //设置此节点为选择状态 expandParent(subchildren[j]); //设置此节点所有父级展开 // return; }else{ subchildren[j].text = subchildren[j].text.replace('red','black'); $('#metaDbInfo').tree('update', { target: subchildren[j].target, text:subchildren[j].text }); } } } }else{ if(parentNode[i].text.indexOf(searchCon)>=0){ //||children[j].id.indexOf(searchCon)>=0 if (parentNode[i]){ $('#metaDbInfo').tree('update', { target: parentNode[i].target, text: "<span style='color:red;'>"+ parentNode[i].text+"</span>" }); } // selectNode(parentNode[i]); expandParent(parentNode[i]); // return; } } } } function selectNode(node){ $('#metaDbInfo').tree('select',node.target); }; function expandParent(node){ var parent = node; var t = true; do { parent = $('#metaDbInfo').tree('getParent',parent.target); //获取此节点父节点 if(parent){ //如果存在 t=true; $('#metaDbInfo').tree('expand',parent.target); }else{ t=false; } }while (t); };
最新回复(0)