0、JQuery Easyui Tree 插件树菜单搜索

一、实现方案

根据搜索的关键字,配对所有的节点。符合条件就显示否则隐藏。如果,该节点符合搜索配对条件,该节点的父节点要显示。

二、实现代码

2.1、页面结构

<div class="bor bg-white mt5">
	<div class="title2">
		<i class="fa fa-image"></i>&nbsp;<strong>售卖产品图片</strong>
		<span class="search-box pd5">
	    	<input v-textbox="searchProductImage" :options="{prompt:'请输入文件夹名称',width:200}">
	    </span>
	</div>
	<div class="bg-white">
		<ul id="productImageTree" v-tree url="/获取产品类目?type=imageType&screenType=new" :options="{ 
			animate:true,
			lines:true
		}" :on-click="selectProductCategory" :on-load-success="initSearch"></ul>
	</div>
</div>

var vm=new Vue({
	....
	watch: {
		'searchProductImage' : function(newVal){
			var self = this;
			self.jqTreeSearch('productImageTree',newVal);
		}
	}
})

 2.2、具体搜索逻辑

jqTreeSearch: function(jqTreeId,searchText){
	var self = this;
	var jqTree = $('#'+jqTreeId);
	//得到tree顶级node
	var parentNode=jqTree.tree('getRoots');
	//循环顶级 node 
	var children; 
    for(var i=0;i<parentNode.length;i++){
    	 var parentCount = 0;
    	 //获取顶级node下所有子节点
         children = jqTree.tree('getChildren',parentNode[i].target); 
         if(children){ //如果有子节点 
             for(var j=0;j<children.length;j++){ //循环所有子节点 
             if(children[j].text.indexOf(searchText)>=0 || children[j].id.indexOf(searchText)>=0){ //判断节点text是否包含搜索文本                     
            	 $(children[j].target).show();
                 // 设置该父节点是否隐藏显示
                 var jqTreeParentNode = $(jqTree.tree('getParent',children[j].target).target);
             	 if(jqTreeParentNode.is(':hidden') || parentCount == 0){
             		parentCount++;
             		jqTreeParentNode.show();
             		self.expandParent(jqTreeId,children[j]);
					 } 
             }else{
            	 $(children[j].target).hide();
             } 
             } 
         }else{ 
             if(parentNode[i].text.indexOf(searchText)>=0 || children[j].id.indexOf(searchText) >=0){ 
            	 $(parentNode[i].target).show();
            	 // 设置该父节点是否隐藏显示
         var jqTreeParentNode = $(jqTree.tree('getParent',parentNode[i].target).target);
     	 if(jqTreeParentNode.is(':hidden')|| parentCount == 0){
            parentCount++;
     		jqTreeParentNode.show();
     		self.expandParent(jqTreeId,parentNode[i]);
				 } 
             }else{
            	 $(parentNode[i].target).hide();
             } 
         } 
     }
},
expandParent: function(jqTreeId,node){ //展开父节点
    var parent = node; 
    var t = true; 
    do { 
	    parent = $('#'+jqTreeId).tree('getParent',parent.target); //获取此节点父节点 
	    if(parent){ //如果存在 
	        t=true; 
	        $('#'+jqTreeId).tree('expand',parent.target); 
	    }else{ 
	        t=false; 
	    } 
    }while (t);            
}

 三、实现效果

 四、参考资料

Easyui Tree 树_EasyUI 插件

关于easyui tree控件树节点的搜索实现_kry1201的专栏-CSDN博客

jquery easyui tree的搜索树节点方法 - 艺术代码 - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值