html页面需要引入以下资源

  1. <!-- jquery包,ztree依赖jquery -->
  2. <script type="text/javascript" src="jquery-1.4.4.min.js"></script>
  3.  
  4. <!-- ztree核心包,ztree核心功能 -->
  5. <script type="text/javascript" src="jquery.ztree.core-3.5.min.js"></script>
  6.  
  7. <!-- ztree exhide包,ztree隐藏显示结点需要此包支持 -->
  8. <script type="text/javascript" src="jquery.ztree.exhide-3.5.min.js"></script>

html页面结构

  1. <div class="container">
  2. <div class="search-bar">
  3. <input id="keyword" type="text" placeholder="请输入...">
  4. <button id="search">搜索</button>
  5. </div>
  6. <div class="content">
  7. <!-- 用于显示ztree的html元素的class一定要设置为ztree-->
  8. <ul id="ztreeObj" class="ztree"></ul>
  9. </div>
  10. </div>

js核心代码

对于一个结点,它是否需要显示,不仅仅只看它是否包含搜索关键字,还需要看它的父结点和子结点是否包含关键字,只有当父结点和子结点都不包含搜索关键字,该结点才需要隐藏

  1. /**
  2. * 查找子结点,如果找到,返回true,否则返回false
  3. */
  4. function searchChildren(keyword,children){
  5. if(children == null || children.length == 0){
  6. return false;
  7. }
  8. for(var i = 0;i < children.length;i++){
  9. var node = children[i];
  10. if(node.name.indexOf(keyword)!=-1){
  11. return true;
  12. }
  13. //递归查找子结点
  14. var result = searchChildren(keyword,node.children);
  15. if(result){
  16. return true;
  17. }
  18. }
  19. return false;
  20. }
  21.  
  22. /**
  23. * 查找当前结点和父结点,如果找到,返回ture,否则返回false
  24. */
  25. function searchParent(keyword,node){
  26. if(node == null){
  27. return false;
  28. }
  29. if(node.name.indexOf(keyword)!=-1){
  30. return true;
  31. }
  32. //递归查找父结点
  33. return searchParent(keyword,node.getParentNode());
  34. }
  35.  
  36. var hiddenNodes = [];
  37. $('#search').click(function(){
  38. var ztreeObj = $.fn.zTree.getZTreeObj("ztreeObj");
  39. //显示上次搜索后隐藏的结点
  40. ztreeObj.showNodes(hiddenNodes);
  41. //查找不符合条件的结点
  42. //返回true表示要过滤,需要隐藏,返回false表示不需要过滤,不需要隐藏
  43. function filterFunc(node){
  44. var keyword=$("#keyword").val();
  45. //如果当前结点,或者其父结点可以找到,或者当前结点的子结点可以找到,则该结点不隐藏
  46. if(searchParent(keyword,node) || searchChildren(keyword,node.children)){
  47. return false;
  48. }
  49. return true;
  50. };
  51.  
  52. //获取不符合条件的叶子结点
  53. hiddenNodes=ztreeObj.getNodesByFilter(filterFunc);
  54.  
  55. //隐藏不符合条件的叶子结点
  56. ztreeObj.hideNodes(hiddenNodes);
  57. });

ztree根据关键字模糊搜索的更多相关文章

  1. zTree树的模糊搜索

    工作需要,所以做了一个比较方便的搜索功能:1.功能实现都是基于zTree的API:2.如有更好的建议,欢迎拍我:其中要说明下的是flag 这个字段, 这是我自己定义的扩展字段,代码中涉及到flag 请 ...

  2. ztree树的模糊搜索功能

    在做机场项目的时候,业务为一个input框,点击的时候出现一个下拉树,这个下拉树是所有的设备,由于设备太多,加上分了区域,为了更好的用户体验,设计一个模糊搜索的功能,方便用户进行选择 具体实现过程如下 ...

  3. ztree 树的模糊搜索

    (转载),有个坑记录下: (原文)实现类似下面这种: /** * 展开树 * @param treeId */ function expand_ztree(treeId) { var treeObj ...

  4. 百度地图API 关键字模糊搜索

    http://api.map.baidu.com/place/v2/search?q=广场&region=汕头&output=json&ak=5E56A48675a5cd09a ...

  5. [jquery]添加行内容后根据下拉菜单选择内容对比之前已有选项,若有重置再提示

    今天页面上一个添加列内容时,要对选择内容与之前已有选项内容作对比,防止用户重复选择内容 页面HTML代码 <ul class="list-group xj-list-NObor xj- ...

  6. salesforce中soql及sosl的伪‘Like’模糊检索

    salesforce里有soql.sosl两种查询语法,soql针对模糊搜索也有‘like’关键字,然而只能针对其自带字段如:Name.Id:对于自定义添加的字段如:Message__c.Note__ ...

  7. DirBuster工具扫描敏感文件

    DirBuster是一个多线程Java应用程序,旨在强制Web/应用程序服务器上的目录和文件名.它可以选择执行纯暴力,在查询隐藏文件和目录方面非常好用. 1)安装DirBuster 前提:电脑中必须安 ...

  8. (通用版)salesforce中soql及sosl的伪‘Like’模糊检索

    salesforce里有soql.sosl两种查询语法,soql针对模糊搜索也有‘like’关键字,然而只能针对其自带字段如:Name.Id:对于自定义添加的字段如:Message__c.Note__ ...

  9. 下拉框搜索插件chosen

    {% load staticfiles %} <!DOCTYPE html> <html lang="en"> <head> <meta ...

随机推荐

  1. 简单工厂(三)——JDK源码中的简单工厂

    private static Calendar createCalendar(TimeZone zone,Locale aLocale) { CalendarProvider provider = L ...

  2. [Go] 数据类型,变量与变量作用域,常量

    // var.gopackage main import ( "fmt" ) func main() { // 声明变量的一般形式是使用 var 关键字,可以一次声明多个变量 // ...

  3. Intellij IDEA debug断点调试技巧与总结详解篇

    1. Rerun . 这个就是结束debug模式,直接以run的方式重新跑某个程序.2. 直接跑完. 到下一个断点停下. 没有就直接跑完程序.3. 停止项目或者程序.要是自己的main呢. 点一下就停 ...

  4. Mysql 语句 insert into 与 replace into 区别

    []insert into 与 replace into 区别 replace into 的运行与insert into 很相似.不同点: 若表中的一个旧记录与一个用于PRIMARY KEY 或 一个 ...

  5. Python之路【第三十一篇】:django ajax

    Ajax 文件夹为Ajaxdemo 向服务器发送请求的途径: 1.浏览器地址栏,默认get请求: 2.form表单: get请求 post请求 3.a标签,超链接(get请求) 4.Ajax请求 特点 ...

  6. sqlite 安装与编译

    本文简述了SQLite的概念,并详细描述了SQLite在Linux和Windows平台下的编译方法 关于 SQLite SQLite是一个进程内的库,实现了自给自足的.无服务器的.零配置的.事务性的 ...

  7. Jmeter相关参数

    一.线程组 线程组主要包含三个参数:线程数.准备时长(Ramp-Up Period(in seconds)).循环次数. 线程数:虚拟用户数.一个虚拟用户占用一个进程或线程.设置多少虚拟用户数在这里也 ...

  8. select中的option被选中时页面的跳转

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 解决使用RabbitTemplate操作RabbitMQ,发生The channelMax limit is reached. Try later.问题

    使用RabbitTemplate操纵RabbitMQ,每个RabbitTemplate等于一个connection,每个connection最多支持2048个channel,当hannel达到2048 ...

  10. Visual Studio 使用 Parallel Builds Monitor 插件迅速找出编译速度慢的瓶颈,优化编译速度

    原文:Visual Studio 使用 Parallel Builds Monitor 插件迅速找出编译速度慢的瓶颈,优化编译速度 嫌项目编译太慢?不一定是 Visual Studio 的问题,有可能 ...