`
niulanshan
  • 浏览: 565409 次
文章分类
社区版块
存档分类
最新评论

zTree实现可搜索功能(升级版)

 
阅读更多

1、问题背景

(1)生成zTree

(2)点击节点选中并给输入框赋值

(3)输入某个字符,树节点含有该字符被选中,颜色发生变化


2、实现源码

<!DOCTYPE html>
<html>
<head>
	<title>zTree具有搜索功能</title>
	<meta http-equiv="content-type" content="text/html; charset=UTF-8">
	<link rel="stylesheet" href="../../../css/demo.css" type="text/css">
	<link rel="stylesheet" href="../../../css/zTreeStyle/zTreeStyle.css" type="text/css">
	<script type="text/javascript" src="../../../js/jquery-1.4.4.min.js"></script>
	<script type="text/javascript" src="../../../js/jquery.ztree.core.js"></script>
	<script type="text/javascript">
		var setting = {
			view: {
				showIcon:false,
				showTitle: false,
				showLine: true,
				fontCss: setFontCss
			},
			callback: {
				onClick: zTreeOnClick
			}
		};

		var zNodes =[
			{id:"0",name:"树", open:true,
				children: [
					{id:"01",name:"灌木",open:true,
						children: [
							{id:"010",name:"银杏"},
							{id:"011",name:"桑树"},
							{id:"012",name:"红树"},
							{id:"013",name:"榕树"}
						]},
					{id:"02",name:"乔木",open:true,
						children: [
							{id:"020",name:"杨树"},
							{id:"021",name:"槐树"},
							{id:"022",name:"杉木"},
							{id:"023",name:"松树"}
						]}
				]}
		];

		$(document).ready(function(){
			$.fn.zTree.init($("#tree"), setting, zNodes);
			
			$("#dataBtn").keyup(function(){
				var dt = $(this).val();
				setColor('tree','name',dt);
			});
		});
		
		function setColor(id,key,value){  
		    treeId = id;  
		    if(value != "")
		    {
		        var treeObj = $.fn.zTree.getZTreeObj(treeId);  
		        nodeList = treeObj.getNodesByParamFuzzy(key, value);  
		        if(nodeList && nodeList.length>0)
		        {
		            updateNodes(true,nodeList,treeId);  
		        }  
		    }  
		}  
		
		function updateNodes(highlight,nodeList,treeId) {  
		    var treeObj = $.fn.zTree.getZTreeObj(treeId);  
		    for( var i=0; i<nodeList.length;i++) 
		    {
		        nodeList[i].highlight = highlight;  
		        treeObj.updateNode(nodeList[i]);  
		    }  
		}  
		
		function setFontCss(treeId, treeNode) 
		{
			 return (!!treeNode.highlight) ? {color:"#0000FF", "font-weight":"bold","font-size":"14px"} : {color:"#333", "font-weight":"normal"};  
		};
		
		function zTreeOnClick(event, treeId, treeNode) {
			var zTree = $.fn.zTree.getZTreeObj("tree")
			var views = zTree.setting.view;
			$("#dataBtn").val(treeNode.name);
			views["fontCss"] = reSetFontCss;
		};
		
		function reSetFontCss(treeId, treeNode)
		{
			return (!treeNode.click)?{color:"#000000", "font-weight":"normal"}:{}; 
		}
	</script>
</head>

<body style="padding: 20px;">
	<div>
		<input type="text" id="dataBtn" style="width: 227px;"/>
	</div>
	<div class="content_wrap">
		<div class="zTreeDemoBackground left">
			<ul id="tree" class="ztree"></ul>
		</div>
	</div>
</body>
</html>

3、实现结果

(1)初始化时


(2)点击节点


(3)输入某个字符



4、问题分析

(1)缺陷

输入框输入某个字符,节点颜色发生变化,但是无法重置(恢复原来的颜色)


5、修复bug

<!DOCTYPE html>  
<html>  
<head>  
    <title>zTree具有搜索功能</title>  
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">  
    <link rel="stylesheet" href="../../../css/demo.css" type="text/css">  
    <link rel="stylesheet" href="../../../css/zTreeStyle/zTreeStyle.css" type="text/css">  
    <script type="text/javascript" src="../../../js/jquery-1.4.4.min.js"></script>  
    <script type="text/javascript" src="../../../js/jquery.ztree.core.js"></script>  
    <script type="text/javascript">  
        var setting = {  
            view: {  
                showIcon:false,  
                showTitle: false,  
                showLine: true,  
                fontCss: setFontCss  
            },  
            callback: {  
                onClick: zTreeOnClick  
            }  
        };  
  
        var zNodes =[  
            {id:"0",name:"树", open:true,  
                children: [  
                    {id:"01",name:"灌木",open:true,  
                        children: [  
                            {id:"010",name:"银杏"},  
                            {id:"011",name:"桑树"},  
                            {id:"012",name:"红树"},  
                            {id:"013",name:"榕树"}  
                        ]},  
                    {id:"02",name:"乔木",open:true,  
                        children: [  
                            {id:"020",name:"杨树"},  
                            {id:"021",name:"槐树"},  
                            {id:"022",name:"杉木"},  
                            {id:"023",name:"松树"}  
                        ]}  
                ]}  
        ];  
  
        $(document).ready(function(){  
            $.fn.zTree.init($("#tree"), setting, zNodes);  
              
            $("#dataBtn").keyup(function(){  
            	var zTree = $.fn.zTree.getZTreeObj("tree");
           		var views = zTree.setting.view; 
           		views["fontCss"] = setFontCss;
                var dt = $(this).val();  
                setColor('tree','name',dt);  
            });  
        });  
          
        function setColor(id,key,value){    
            treeId = id;    
            if(value != "")  
            {  
                var treeObj = $.fn.zTree.getZTreeObj(treeId);    
                nodeList = treeObj.getNodesByParamFuzzy(key, value);    
                if(nodeList && nodeList.length>0)  
                {  
                    updateNodes(true,nodeList,treeId);    
                }    
            } 
            else
            {
            	var treeObj = $.fn.zTree.getZTreeObj(treeId);  
            	var views = treeObj.setting.view; 
           		views["fontCss"] = reSetFontCss;
           		treeObj.refresh();
            }
        }    
          
        function updateNodes(highlight,nodeList,treeId) {    
            var treeObj = $.fn.zTree.getZTreeObj(treeId);    
            for( var i=0; i<nodeList.length;i++)   
            {  
                nodeList[i].highlight = highlight;    
                treeObj.updateNode(nodeList[i]);    
            }    
        }    
          
        function setFontCss(treeId, treeNode)   
        {  
             return (!!treeNode.highlight) ? {color:"#0000FF", "font-weight":"bold","font-size":"14px"} : {color:"#000", "font-weight":"normal"};    
        };  
          
        function zTreeOnClick(event, treeId, treeNode) {  
            var zTree = $.fn.zTree.getZTreeObj("tree");
            var views = zTree.setting.view;  
            $("#dataBtn").val(treeNode.name);  
            views["fontCss"] = reSetFontCss;  
            zTree.refresh();
        };  
          
        function reSetFontCss(treeId, treeNode)  
        {  
            return (!treeNode.highlight)?{color:"#000000", "font-weight":"normal"}:{};   
        }  
    </script>  
</head>  
  
<body style="padding: 20px;">  
    <div>  
        <input type="text" id="dataBtn" style="width: 227px;"/>  
    </div>  
    <div class="content_wrap">  
        <div class="zTreeDemoBackground left">  
            <ul id="tree" class="ztree"></ul>  
        </div>  
    </div>  
</body>  
</html>  


分享到:
评论

相关推荐

    ztree实现的基本功能和数据库交互

    总结起来,ZTree是一个强大的树形控件,通过其丰富的功能和与数据库的交互,可以在Web应用中实现复杂的数据展示和操作。通过学习和实践提供的ZtreeDemo,开发者可以更好地理解和运用ZTree,提升项目开发的效率和用户...

    ztree自定义搜索功能 -- 可递归无限层

    本篇将详细探讨"ZTree自定义搜索功能 -- 可递归无限层"这一主题,帮助开发者更好地理解和实现ZTree中的节点搜索功能。 1. **ZTree概述**: ZTree是一个基于jQuery的插件,它提供了丰富的API接口和灵活的配置选项,...

    jquery ztree实现模糊查询功能,给树上的结点添加过滤器

    总结起来,jQuery ZTree的模糊查询功能是通过`filter`方法和可选的`beforeFilter`回调实现的。通过自定义过滤规则,我们可以保持树的原有层次结构,并根据需要提供额外的用户体验优化。在实际项目中,根据具体需求...

    zTree实现多选下拉框

    "zTree实现多选下拉框"这个主题聚焦于如何利用zTree这款JavaScript库来创建一个支持多选功能的下拉框控件。zTree是一款强大的树形插件,广泛应用于网页中展示层次结构数据,如组织结构、文件目录等。本文将详细介绍...

    jquery ztree实现模糊搜索功能

    `searchNode`函数是核心的搜索逻辑,它会根据用户的选择(全词匹配或模糊匹配)以及当前输入的关键词,调用相应的ZTree搜索方法,并更新显示的节点。搜索结果会被存储在`nodeList`数组中,以便进一步处理,如高亮...

    Django引用ztree实现数据库表导入树状目录

    在Django项目中使用ZTree,我们需要将后端返回的数据转换为ZTree可识别的格式。 4. 数据转换: 为了将数据库中的数据表转换为ZTree格式,我们需要编写Django视图函数,查询数据库并格式化数据。数据通常以JSON形式...

    zTree 实现点击input框出现下拉菜单(亲测可用)

    综上所述,通过结合 zTree 的初始化、事件绑定、自定义样式和搜索功能,我们可以实现点击 input 框时出现下拉菜单的功能。提供的压缩包文件 "zTree_v3" 包含了 zTree 的最新版本,你可以直接使用或参考其中的示例...

    ztree实现公司组织结构树状显示

    本项目利用ZTree结合SSM(Spring、SpringMVC、MyBatis)框架,在TOMCAT服务器上实现了公司组织结构的树状展示功能。 首先,SSM框架是Java Web开发中广泛使用的三大组件集合。Spring作为基础框架,提供了依赖注入和...

    ztree实现左右两棵树的节点移动

    在IT领域,特别是前端开发中,ZTree是一款广泛使用的JavaScript组件,它主要用于构建可操作的树形结构。本文将深入探讨如何使用ZTree实现左右两棵树之间的节点移动,包括节点的添加、删除以及同步更新的操作。 首先...

    zTree实现树形菜单

    在这个场景下,我们讨论的是如何利用zTree这个JavaScript库来实现树形菜单。zTree是一款功能丰富的jQuery插件,专门用于构建交互式的树形结构。 首先,我们需要理解zTree的基本概念。zTree的核心是JSON数据格式,它...

    Ztree+treeTable实现 Java实现 树形菜单 树形表格

    本篇将详细介绍如何利用Ztree和treeTable来实现这样的功能。 Ztree是一款基于JavaScript的树形插件,它提供了丰富的功能和良好的性能,广泛应用于网页端的数据展示。Ztree_v3是其第三个主要版本,具有更多的特性和...

    Ztree实现主要代码

    Ztree是一款非常流行的JavaScript插件,用于构建可交互的树形控件,尤其适用于网页上的导航菜单和数据展示。在这个场景下,"Ztree实现主要代码"的标题暗示我们将探讨如何利用zTree来实现在页面左侧展示树形结构,当...

    jquery ztree实现树的搜索功能

    在搜索功能的实现方面,zTree允许用户通过在树形控件上方设置一个搜索框,在用户输入搜索关键词后,根据输入的内容对树节点进行模糊匹配,并将匹配到的节点高亮显示。这个过程主要通过自定义的方法和zTree提供的API...

    ztree实现AJAX树状结构-JAVA实现

    在"ztree实现AJAX树状结构-JAVA实现"的项目中,我们将关注如何利用ZTree的AJAX功能动态加载树节点,同时与Java后端进行数据交互。 首先,我们需要在HTML页面中引入ZTree的CSS和JS文件,并创建一个用于显示树的`&lt;ul&gt;...

    ztree官网 ztree官网

    ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网ztree官网...

    zTree 实现点击input框出现下拉菜单(亲测可用)上一版的传错了

    在这个场景中,我们要讨论的是如何利用zTree实现一个功能,即当用户点击input输入框时,能够弹出一个下拉菜单供用户选择。这个功能在许多Web应用中都很常见,例如搜索建议、选择列表等。 首先,我们需要理解zTree的...

    ztree插件实现树形控件

    本篇文章将深入探讨如何利用ZTree插件实现树形控件,并介绍其核心概念和关键功能。 1. **ZTree基本概念** - **节点(Node)**:ZTree中的每个数据单元都称为节点,可以包含父节点和子节点,形成树状结构。 - **树...

    zTree-zTree_v3-master.zip_ztree_多功能插件

    4. **搜索功能**:内置搜索框,用户可快速查找目标节点,提高用户体验。 5. **拖放功能**:允许用户通过拖放节点来调整树形结构,便于管理复杂的层级关系。 6. **权限控制**:可以设置节点的可见性、可操作性,...

    ztree实现目录树

    在实际应用中,ZTree还提供了许多其他功能,如节点的拖拽、搜索、编辑等。开发者可以根据需求选择合适的配置和扩展功能。同时,为了提升用户体验,可以考虑优化数据加载策略,比如分页加载、懒加载等。 总结来说,...

Global site tag (gtag.js) - Google Analytics