jquery ztree异步搜索(搜叶子)实践


Posted in Javascript onFebruary 25, 2016

一、初始异步加载树

 初始化默认给出一个根结点,再结合异步加载的方式手动触发默认加载第一层,如图:

jquery ztree异步搜索(搜叶子)实践

代码如下:

var treeSetting = {
 async: {
 enable: true, <a href="http://my.oschina.net/wealpan/admin/"xxx/demo.do?method=listByTree" rel="nofollow">url:"xxx/demo.do?method=listByTree</a>",
 dataType:"json",
 autoParam:["id=pid"]
 },
 view: {
 dblClickExpand: true,
 selectedMulti: false,
 expandSpeed: ($.browser.msie && parseInt($.browser.version)<=6)?"":"fast"
 },
 data: {
 simpleData: {
  enable:true,
  idKey: "id",
  pIdKey: "pid",
  rootPId: "root"
 }
 },
 callback: {
 onNodeCreated: zTreeOnNodeCreated
 }
};
 
//默认根结点
var rootNode = {"id":0, "pid":"root", "name":"商品分类", "open":true, "isParent":true};
 
$(document).ready(function(){
 var zTreeObj = $.fn.zTree.init($("#tree"), treeSetting, rootNode);
 var node = zTreeObj.getNodeByParam("id", 0, null);
 zTreeObj.reAsyncChildNodes(node, "refresh");
});

二、异步搜索叶子结点

    在使用JQuery ZTREE时可能要用到异步的方式模糊搜索叶子结点,如图:

 jquery ztree异步搜索(搜叶子)实践

    而如果只使用ZTREE自带的展开方法zTreeObj.expandNode只是会展开改结点,无法触发异步加载;这时候就必须手动调用异步加载的方法进行处理,解决思路如下:   
    通过在otherParam数组中设值的方式将搜索参数带到后台(无参数时必须将otherParam设为空数组否则一直会将前一次的参数带到后台);在结点创建完成后的回调函数onNodeCreated中进行手动异步加载。

代码如下:

function searchM() {
 var param = $.trim($("input[name='param']").val());
 var treeObj = $.fn.zTree.getZTreeObj("tree");
 var node = treeObj.getNodeByParam("id", 0, null);
 if(param != ""){
 param = encodeURI(encodeURI(param));
 treeObj.setting.async.otherParam=["param", param];
 }else {
 //搜索参数为空时必须将参数数组设为空
 treeObj.setting.async.otherParam=[];
 }
 treeObj.reAsyncChildNodes(node, "refresh");
}
 
function zTreeOnNodeCreated(event, treeId, treeNode) {
 var param <span></span><span></span>= $.tr<span></span>im($("input[name='param']").val());
 var treeObj = $.fn.zTree.getZTreeObj("tree");
 //只有搜索参数不为空且该节点为父节点时才进行异步加载
 if(param != "" && treeNode.isParent){
 treeObj.reAsyncChildNodes(treeNode, "refresh");
 } 
};

更多关于ztree控件的内容,请参考专题《jQuery插件ztree使用汇总》 。

以上就是关于jquery ztree异步搜索的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
非常漂亮的JS代码经典广告
Oct 21 Javascript
jquery实现table鼠标经过变色代码
Sep 25 Javascript
js图片滚动效果时间可随意设定当鼠标移上去时停止
Jun 26 Javascript
JS实现控制表格只显示行边框或者只显示列边框的方法
Mar 31 Javascript
Javascript监视变量变化的方法
Jun 09 Javascript
jQuery实现可编辑的表格实例讲解(2)
Sep 17 Javascript
AngularJS模块学习之Anchor Scroll
Jan 19 Javascript
轻松掌握JavaScript装饰者模式
Aug 27 Javascript
javascript DOM的详解及实例代码
Mar 06 Javascript
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
Jun 16 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
Jul 23 Javascript
pm2启动ssr失败的解决方法
Jun 29 Javascript
JQuery ztree 异步加载实例讲解
Feb 25 #Javascript
Node.js编写组件的三种实现方式
Feb 25 #Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
Feb 25 #Javascript
你所未知的3种Node.js代码优化方式
Feb 25 #Javascript
jQuery使用contains过滤器实现精确匹配方法详解
Feb 25 #Javascript
原生javascript实现addClass,removeClass,hasClass函数
Feb 25 #Javascript
javascript随机抽取0-100之间不重复的10个数
Feb 25 #Javascript
You might like
PHP原生模板引擎 最简单的模板引擎
2012/04/25 PHP
js select常用操作控制代码
2010/03/16 Javascript
读jQuery之五(取DOM元素)
2011/06/20 Javascript
JAVASCRIPT函数作用域和提前声明 分享
2013/08/22 Javascript
浅谈$(document)和$(window)的区别
2015/07/15 Javascript
全面解析Bootstrap中scrollspy(滚动监听)的使用方法
2016/06/06 Javascript
浅谈JavaScript 数据属性和访问器属性
2016/09/01 Javascript
JavaScript自定义函数实现查找两个字符串最长公共子串的方法
2016/11/24 Javascript
JavaScript与Java正则表达式写法的区别介绍
2017/08/15 Javascript
node基于puppeteer模拟登录抓取页面的实现
2018/05/09 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
2018/07/12 Javascript
JavaScrip数组去重操作实例小结
2019/06/20 Javascript
Smartour 让网页导览变得更简单(推荐)
2019/07/19 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
2020/04/17 Javascript
小程序实现简单语音聊天的示例代码
2020/07/24 Javascript
vue 使用饿了么UI仿写teambition的筛选功能
2021/03/01 Vue.js
Python的Socket编程过程中实现UDP端口复用的实例分享
2016/03/19 Python
Python过滤列表用法实例分析
2016/04/29 Python
pygame 精灵的行走及二段跳的实现方法(必看篇)
2017/07/10 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
2019/07/01 Python
使用python实现滑动验证码功能
2019/08/05 Python
Python提取PDF内容的方法(文本、图像、线条等)
2019/09/25 Python
Python关键字及可变参数*args,**kw原理解析
2020/04/04 Python
Python爬取阿拉丁统计信息过程图解
2020/05/12 Python
Python list和str互转的实现示例
2020/11/16 Python
Python中return函数返回值实例用法
2020/11/19 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
2021/01/15 Python
电子商务网站的创业计划书
2014/01/05 职场文书
会计自荐信范文
2014/03/09 职场文书
党的群众路线教育实践活动自我剖析材料
2014/10/08 职场文书
遗嘱格式范本
2015/08/07 职场文书
解决Pytorch dataloader时报错每个tensor维度不一样的问题
2021/05/28 Python
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP
MySQL中的引号和反引号的区别与用法详解
2021/10/24 MySQL
Python游戏开发实例之graphics实现AI五子棋
2021/11/01 Python
webpack介绍使用配置教程详解webpack介绍和使用
2022/06/25 Javascript