ztree根据关键字模糊搜索 改良了一下下

今天在处理 ztree模糊查询,先想的去后台查询但是发现不仅浪费资源,而且查询条件不少,还得有树结构。果断放弃了。想想既然就在ztree搜索其实数据就是已经有了的(此处不是异步树)所以前台搜索就行。但是百度半天总不满足业务,所以自己改良了一个。满足了搜索展开树直至叶子节点。 

html 代码:

<!-- jquery包,ztree依赖jquery --> 
<script type="text/javascript" src="ztree/js/jquery-1.4.4.min.js"></script>

<!-- ztree核心包,ztree核心功能 -->    
<script type="text/javascript" src="ztree/js/jquery.ztree.core-3.5.min.js"></script>

<!-- ztree exhide包,ztree隐藏显示结点需要此包支持 -->   
<script type="text/javascript" src="ztree/js/jquery.ztree.exhide-3.5.min.js"></script>
 <div class="container">
        <div class="search-bar">
            <input id="key" type="text" placeholder="请输入...">
            <button id="search-bt">搜索</button>
        </div>
        <div class="content">
            <!-- 用于显示ztree的html元素的class一定要设置为ztree-->
            <ul id="treeMultiple" class="ztree"></ul>
        </div>
    </div>

js代码:

var hiddenNodes=[];	//用于存储被隐藏的结点
$(function(){
	init();
})
function init(){
	$("#searchstaff_button").click(filter);
};
//过滤ztree显示数据
function filter(){
	var zTreeObj = $.fn.zTree.getZTreeObj("treeMultiple");
	console.log(zTreeObj);
	//显示上次搜索后背隐藏的结点
	zTreeObj.showNodes(hiddenNodes);
	//查找不符合条件的叶子节点
	var _keywords=$("#key").val();
	function filterFunc(node){
		if(node.isParent||node.name.indexOf(_keywords)!=-1) return false;
		return true;		
	};
    //用于展开树 原来的点击搜索不会展开
	if(_keywords.length>0){
		zTreeObj.expandAll(true); 
	}else{
		zTreeObj.expandAll(false); 
		}
	//获取不符合条件的叶子结点
	hiddenNodes=zTreeObj.getNodesByFilter(filterFunc);
	//隐藏不符合条件的叶子结点
	zTreeObj.hideNodes(hiddenNodes);	
};

 

转载于:https://my.oschina.net/u/3418748/blog/900250

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值