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 相关文章推荐
JavaScript如何实现对数字保留两位小数一位自动补零
Dec 18 Javascript
JavaScript操作HTML DOM节点的基础教程
Mar 11 Javascript
Javascript+CSS3实现进度条效果
Oct 28 Javascript
ajax的分页查询示例(不刷新页面)
Jan 11 Javascript
angularjs中使用ng-bind-html和ng-include的实例
Apr 28 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
Aug 07 Javascript
vue-cli3 从搭建到优化的详细步骤
Jan 20 Javascript
JavaScript中常用的简洁高级技巧总结
Mar 10 Javascript
vue实现分页栏效果
Jun 28 Javascript
分享Angular http interceptors 拦截器使用(推荐)
Nov 10 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
Dec 06 Javascript
vue 动态组件(component :is) 和 dom元素限制(is)用法说明
Sep 04 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
使用bcompiler对PHP文件进行加密的代码
2010/08/29 PHP
php启用zlib压缩文件的配置方法
2013/06/12 PHP
PHP的Yii框架的基本使用示例
2015/08/21 PHP
PHP中error_reporting()用法详解
2015/08/31 PHP
PHP面试题之文件目录操作
2015/10/15 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
2017/02/08 PHP
laravel 5.4中实现无限级分类的方法示例
2017/07/27 PHP
Laravel框架中自定义模板指令总结
2017/12/17 PHP
CI框架(CodeIgniter)实现的数据库增删改查操作总结
2018/05/23 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
2种jQuery 实现刮刮卡效果
2015/02/01 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
2015/11/29 Javascript
jQuery实现二级下拉菜单效果
2016/01/05 Javascript
实例详解AngularJS实现无限级联动菜单
2016/01/15 Javascript
js 动态生成html 触发事件传参字符转义的实例
2017/02/14 Javascript
jQuery插件FusionCharts实现的2D饼状图效果【附demo源码下载】
2017/03/03 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
微信分享调用jssdk实例
2017/06/08 Javascript
详解vue.js 开发环境搭建最简单攻略
2017/06/12 Javascript
详解vue移动端项目代码拆分记录
2019/03/15 Javascript
JavaScript实现页面中录音功能的方法
2019/06/04 Javascript
深入浅出vue图片路径的实现
2019/09/04 Javascript
js实现带有动画的返回顶部
2020/08/09 Javascript
[56:35]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第二局
2016/02/27 DOTA
python使用rabbitmq实现网络爬虫示例
2014/02/20 Python
pandas重新生成索引的方法
2018/11/06 Python
浅析python参数的知识点
2018/12/10 Python
利用python和百度地图API实现数据地图标注的方法
2019/05/13 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
西班牙在线宠物商店:zooplus.es
2017/02/24 全球购物
初中学校军训方案
2014/05/09 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
婚内分居协议书范文
2014/11/26 职场文书
公司庆典欢迎词
2015/01/26 职场文书
Mysql如何查看是否使用到索引
2022/12/24 MySQL