ztree根据关键字模糊搜索
html页面需要引入以下资源
- <!-- jquery包,ztree依赖jquery -->
- <script type="text/javascript" src="jquery-1.4.4.min.js"></script>
- <!-- ztree核心包,ztree核心功能 -->
- <script type="text/javascript" src="jquery.ztree.core-3.5.min.js"></script>
- <!-- ztree exhide包,ztree隐藏显示结点需要此包支持 -->
- <script type="text/javascript" src="jquery.ztree.exhide-3.5.min.js"></script>
html页面结构
- <div class="container">
- <div class="search-bar">
- <input id="keyword" type="text" placeholder="请输入...">
- <button id="search">搜索</button>
- </div>
- <div class="content">
- <!-- 用于显示ztree的html元素的class一定要设置为ztree-->
- <ul id="ztreeObj" class="ztree"></ul>
- </div>
- </div>
js核心代码
对于一个结点,它是否需要显示,不仅仅只看它是否包含搜索关键字,还需要看它的父结点和子结点是否包含关键字,只有当父结点和子结点都不包含搜索关键字,该结点才需要隐藏
- /**
- * 查找子结点,如果找到,返回true,否则返回false
- */
- function searchChildren(keyword,children){
- if(children == null || children.length == 0){
- return false;
- }
- for(var i = 0;i < children.length;i++){
- var node = children[i];
- if(node.name.indexOf(keyword)!=-1){
- return true;
- }
- //递归查找子结点
- var result = searchChildren(keyword,node.children);
- if(result){
- return true;
- }
- }
- return false;
- }
- /**
- * 查找当前结点和父结点,如果找到,返回ture,否则返回false
- */
- function searchParent(keyword,node){
- if(node == null){
- return false;
- }
- if(node.name.indexOf(keyword)!=-1){
- return true;
- }
- //递归查找父结点
- return searchParent(keyword,node.getParentNode());
- }
- var hiddenNodes = [];
- $('#search').click(function(){
- var ztreeObj = $.fn.zTree.getZTreeObj("ztreeObj");
- //显示上次搜索后隐藏的结点
- ztreeObj.showNodes(hiddenNodes);
- //查找不符合条件的结点
- //返回true表示要过滤,需要隐藏,返回false表示不需要过滤,不需要隐藏
- function filterFunc(node){
- var keyword=$("#keyword").val();
- //如果当前结点,或者其父结点可以找到,或者当前结点的子结点可以找到,则该结点不隐藏
- if(searchParent(keyword,node) || searchChildren(keyword,node.children)){
- return false;
- }
- return true;
- };
- //获取不符合条件的叶子结点
- hiddenNodes=ztreeObj.getNodesByFilter(filterFunc);
- //隐藏不符合条件的叶子结点
- ztreeObj.hideNodes(hiddenNodes);
- });
ztree根据关键字模糊搜索的更多相关文章
- zTree树的模糊搜索
工作需要,所以做了一个比较方便的搜索功能:1.功能实现都是基于zTree的API:2.如有更好的建议,欢迎拍我:其中要说明下的是flag 这个字段, 这是我自己定义的扩展字段,代码中涉及到flag 请 ...
- ztree树的模糊搜索功能
在做机场项目的时候,业务为一个input框,点击的时候出现一个下拉树,这个下拉树是所有的设备,由于设备太多,加上分了区域,为了更好的用户体验,设计一个模糊搜索的功能,方便用户进行选择 具体实现过程如下 ...
- ztree 树的模糊搜索
(转载),有个坑记录下: (原文)实现类似下面这种: /** * 展开树 * @param treeId */ function expand_ztree(treeId) { var treeObj ...
- 百度地图API 关键字模糊搜索
http://api.map.baidu.com/place/v2/search?q=广场®ion=汕头&output=json&ak=5E56A48675a5cd09a ...
- [jquery]添加行内容后根据下拉菜单选择内容对比之前已有选项,若有重置再提示
今天页面上一个添加列内容时,要对选择内容与之前已有选项内容作对比,防止用户重复选择内容 页面HTML代码 <ul class="list-group xj-list-NObor xj- ...
- salesforce中soql及sosl的伪‘Like’模糊检索
salesforce里有soql.sosl两种查询语法,soql针对模糊搜索也有‘like’关键字,然而只能针对其自带字段如:Name.Id:对于自定义添加的字段如:Message__c.Note__ ...
- DirBuster工具扫描敏感文件
DirBuster是一个多线程Java应用程序,旨在强制Web/应用程序服务器上的目录和文件名.它可以选择执行纯暴力,在查询隐藏文件和目录方面非常好用. 1)安装DirBuster 前提:电脑中必须安 ...
- (通用版)salesforce中soql及sosl的伪‘Like’模糊检索
salesforce里有soql.sosl两种查询语法,soql针对模糊搜索也有‘like’关键字,然而只能针对其自带字段如:Name.Id:对于自定义添加的字段如:Message__c.Note__ ...
- 下拉框搜索插件chosen
{% load staticfiles %} <!DOCTYPE html> <html lang="en"> <head> <meta ...
随机推荐
- 简单工厂(三)——JDK源码中的简单工厂
private static Calendar createCalendar(TimeZone zone,Locale aLocale) { CalendarProvider provider = L ...
- [Go] 数据类型,变量与变量作用域,常量
// var.gopackage main import ( "fmt" ) func main() { // 声明变量的一般形式是使用 var 关键字,可以一次声明多个变量 // ...
- Intellij IDEA debug断点调试技巧与总结详解篇
1. Rerun . 这个就是结束debug模式,直接以run的方式重新跑某个程序.2. 直接跑完. 到下一个断点停下. 没有就直接跑完程序.3. 停止项目或者程序.要是自己的main呢. 点一下就停 ...
- Mysql 语句 insert into 与 replace into 区别
[]insert into 与 replace into 区别 replace into 的运行与insert into 很相似.不同点: 若表中的一个旧记录与一个用于PRIMARY KEY 或 一个 ...
- Python之路【第三十一篇】:django ajax
Ajax 文件夹为Ajaxdemo 向服务器发送请求的途径: 1.浏览器地址栏,默认get请求: 2.form表单: get请求 post请求 3.a标签,超链接(get请求) 4.Ajax请求 特点 ...
- sqlite 安装与编译
本文简述了SQLite的概念,并详细描述了SQLite在Linux和Windows平台下的编译方法 关于 SQLite SQLite是一个进程内的库,实现了自给自足的.无服务器的.零配置的.事务性的 ...
- Jmeter相关参数
一.线程组 线程组主要包含三个参数:线程数.准备时长(Ramp-Up Period(in seconds)).循环次数. 线程数:虚拟用户数.一个虚拟用户占用一个进程或线程.设置多少虚拟用户数在这里也 ...
- select中的option被选中时页面的跳转
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 解决使用RabbitTemplate操作RabbitMQ,发生The channelMax limit is reached. Try later.问题
使用RabbitTemplate操纵RabbitMQ,每个RabbitTemplate等于一个connection,每个connection最多支持2048个channel,当hannel达到2048 ...
- Visual Studio 使用 Parallel Builds Monitor 插件迅速找出编译速度慢的瓶颈,优化编译速度
原文:Visual Studio 使用 Parallel Builds Monitor 插件迅速找出编译速度慢的瓶颈,优化编译速度 嫌项目编译太慢?不一定是 Visual Studio 的问题,有可能 ...