jquery ztree实现树的搜索高亮显示功能

这篇博客介绍了如何在ZTree中实现搜索功能,包括添加搜索框、设置搜索参数以及实现节点高亮显示。文章详细展示了JavaScript代码,包括异步加载数据、设置搜索条件和更新节点状态的方法,使得用户可以按关键字快速定位并突出显示树形结构中的匹配节点。
摘要由CSDN通过智能技术生成

添加搜索框:

<div class="ibox" style="margin-bottom: 0">      
	 <div>
	     <input type="text" class="empty" id="keyword" maxlength="50" placeholder="关键字搜索"
	            style="width: 180px;background: #223e4a">
	     <button class="btn" id="btn" onclick="searchNode('tree','name')"
	             style="background: #1e7894;padding: 3px 10px;font-size: 12px;"> 搜索
	     </button>
	 </div>
	 <div class="ibox-content" style="overflow: scroll;height: 28vw">
	     <div id="tree" class="ztree"></div>
	 </div>
</div>

var setting = {
	   async: {
	        enable: true, // 异步加载
	        url:ctx + "system/dept/treeData",
	        autoParam:["id", "name=n", "level=lv"]
	    },
	    data: {
	        key: {
	            title: "title"         // 节点数据保存节点提示信息的属性名称
	        },
	        simpleData: {
	            enable: true           // true / false 分别表示 使用 / 不使用 简单数据模式
	        }
	    },
	    callback: {
	        onRightClick: zTreeOnRightClick
	    },
	    view :{
	        showIcon: false,
	        fontCss: getFontCss
	    }
};
$(function () {
	  $.fn.zTree.init($("#tree"), setting);
});
function zTreeOnRightClick(event, treeId, treeNode) {
   if (treeNode.level && treeNode.level >= 4) {
        var selectedId = treeNode.id;
    }
}

搜索方法:

//使用搜索数据 加高亮显示功能,需要2步
//1.在tree的setting 的view 设置里面加上 fontCss: getFontCss 设置
//2.在ztree容器上方,添加一个文本框,并添加onkeyup事件,该事件调用固定方法 changeColor(id,key,value)
// id指ztree容器的id,一般为ul,key是指按ztree节点的数据的哪个属性为条件来过滤,value是指过滤条件,该过滤为模糊过滤
function searchNode(treeId,key){
    var value = $("#keyword").val();
    var treeObj = $.fn.zTree.getZTreeObj(treeId);
    // treeObj.expandAll(true);
    var nodeList = treeObj.getNodesByParamFuzzy(key, value);
    updateNodes(false);
    if(value != ""){
        if(nodeList && nodeList.length>0){
            updateNodes(true);
        }
    }
    function updateNodes(highlight) {
        if (highlight == false) {
            var nodes = treeObj.transformToArray(treeObj.getNodes());
            for( var i=0; i<nodes.length; i++) {
                nodes[i].highlight = highlight;
                treeObj.updateNode(nodes[i]);
            }
        }else{
            for( var i=0; i<nodeList.length; i++) {
                nodeList[i].highlight = highlight;
                treeObj.updateNode(nodeList[i]);
            }
        }
    }
}
function getFontCss(treeId, treeNode) {
    return (!!treeNode.highlight) ? {color:"#A60000", "font-weight":"bold"} : {color:"#fff", "font-weight":"normal"};
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值