ztree 模糊查询

2 篇文章 0 订阅

之前写的一篇文章仅符合自己项目需求的一种写法,现提供通用的书写方式,废话少说见代码。

页面效果:



代码如下:

//container左侧边栏ztree搜索
    var queryHideNodes = [];//查询隐藏的
    var queryShowNodes = [];//查询展示的
    
    $(".ztreeSearch").keyup(function(e){  
    if(e.keyCode!=13&&e.keyCode!=32&&$(this).val()!=""){
    return;
    }
var treeId = $(".ztree").attr("id");
var treeObj = $.fn.zTree.getZTreeObj(treeId);
var queryWord=$(".ztreeSearch").val().toUpperCase();
//颜色重置
function resetColor(){
for( var i=0; i<queryShowNodes.length;i++) {//初始将上次查询的内容颜色改回黑色
    treeObj.setting.view.fontCss["color"]="black";
        treeObj.updateNode(queryShowNodes[i]);
    }   
}

resetColor();

//展示查询的节点儿
function showQueryNode(node){
if(node.getParentNode()!=null){
treeObj.expandNode(node.getParentNode(),true);
}
}

function hideQueryNode(node){
if(node.isParent){
treeObj.expandNode(node,false);
}
}
function filter(queryShowNode,node){
if(queryShowNode.getParentNode()!=null){
if(queryShowNode.name==node.name){
return true;
}else{
return filter(queryShowNode.getParentNode(),node);
}
}else if(queryShowNode.name==node.name){
return true;
}else{
return false;
}
}
function filterHideFunc(node){
var boolen=true;
for(var i=0;i<queryShowNodes.length;i++){
if(filter(queryShowNodes[i],node)){
boolen=false;
}
}
    return boolen;
}
function filterShowFunc1(node){
    if(node.name.toUpperCase().indexOf(queryWord)==-1) return false;
    return true;
}

function filterShowFunc2(node){
var boolen=false;
for(var i=0;i<queryShowNodes.length;i++){
if(filter(queryShowNodes[i],node)){
boolen=true;
}
}
    return boolen;
}
queryShowNodes=treeObj.getNodesByFilter(filterShowFunc1);//过滤得到匹配的名称的节点
queryHideNodes=treeObj.getNodesByFilter(filterHideFunc);//过滤得到隐藏的
var queryShowNodes2=[];
queryShowNodes2=treeObj.getNodesByFilter(filterShowFunc2);//过滤得到展示的节点
if(!queryShowNodes.length){
treeObj.showNodes(queryHideNodes);
return true;
}
if(queryHideNodes.length){
    for( var i=0; i<queryShowNodes.length;i++) {
        showQueryNode(queryShowNodes[i]);
    }
    for( var i=0; i<queryShowNodes.length;i++) {
        //改变展示节点的颜色
        treeObj.setting.view.fontCss["color"]="red";
            treeObj.updateNode(queryShowNodes[i]);
        }


    }else{
    for( var i=0; i<queryShowNodes.length;i++) {
        hideQueryNode(queryShowNodes[i]);
    }
    }
    treeObj.hideNodes(queryHideNodes);
    treeObj.showNodes(queryShowNodes2);

$(this).focus();
   
    });

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值