由于jquery ui没有集成tree控件,所以在网上找到了zTree v3。zTree无疑是功能非常强大的一款jquery的插件,而且是国人作品,zTree的文档写得也非常好,效果很炫。但是我在使用过程中,发现ztree目前的版本,缺乏一个onSelect的callback。系统的要求是这样的,Tree的数据load完成,render之后,自动选择一个节点,并根据该节点从server装载新的数据并显示。于是决定自己添加一下此功能。

经分析发现zTree的实例是在调用jQuery.fn.zTree.init的时候动态构建的,所以不存在一个静态的类来扩展,所以只有在构建zTree实例的时候截取实例变量并进行扩展,废话少说上代码:

function enZTree(){
if(!$.fn.zTree._ori_init){
$.fn.zTree._ori_init=$.fn.zTree.init;
$.fn.zTree.init=function(){
obj=$.fn.zTree._ori_init.apply(this,arguments);
return function(t){
t._ori_selectNode=t.selectNode;
t.selectNode=function(nd){
t._ori_selectNode.apply(this,arguments);
if (this.setting.callback.onSelect){
this.setting.callback.onSelect(null,this.setting.treeId,nd);
}
};
return t;
}(obj);
}
}
}

代码通过替换jQuery.fn.zTree.init函数实现对用户构建的zTree实例的动态扩展。onSelect的配置参照api文档中其他callback的设置即可。

如果需要自动扩展,则需要注册一个启动方法:

jQuery(document).ready(function(){
enZTree();
});

给zTree添加onSelect callback的更多相关文章

  1. ant design pro 实战 : 使用 ztree

    应当指出,antd 是有 ztree 组件的,但是太简单,无法满足复杂的业务需求. 所以我还是决定使用zTree. 用 npm | cnpm 或者 yarn | tyarn 安装,这一步略. 在 js ...

  2. 带callback的future实现

    jdk暂时不支持,所以只有自己实现带callback的future. 完成后callback的 final TaskPromise promise = new DefaultTaskPromise() ...

  3. 使用 vite 构建一个表情选择插件

    初始化 Vite 基于原生 ES 模块提供了丰富的内建功能,开箱即用.同时,插件足够简单,它不需要任何运行时依赖,只需要安装 vite (用于开发与构建)和 sass (用于开发环境编译 .scss ...

  4. 前端之ajax

    前端之ajax 本节内容 ajax介绍 原生js实现ajax jquery实现ajax json 跨域请求 1. ajax介绍 AJAX(Asynchronous Javascript And XML ...

  5. javascript的ajax

    AJAX 一 AJAX预备知识:json进阶 1.1 什么是JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON是用字符串来表示Javas ...

  6. 【JavaScript】--重点解析之跨域请求

    JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. JSON是用字符串来表示Javascript对象,例如可以在django中发送一个JSON格式 ...

  7. JS、JQuery和ExtJs的跨域处理

    1.什么是跨域?跨域,JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的js无法操作b.com或是c.a. ...

  8. Jsonp跨域访问

    很早之前看过好几篇跨域访问的文章,然后做项目的时候基本没有遇到跨域访问的问题.不过该来的还是会来,前些天终于让我遇到了.于是重温了一下原理这些,再进行实战.于是现在也敢通过实战后的一些理解来和大家分享 ...

  9. 深入浅出JSONP--解决ajax跨域问题

    取不到数据! 上周客户新买了服务器,原本在旧的服务器上放着客户的Web主页信息和一个后台程序(asp.net),在客户的主页中有一个动态显示最新消息的处理,这个处理就是通过ajax异步从那个后台程序中 ...

随机推荐

  1. JAVA-JSP内置对象之exception对象用来处理错误异常

    相关资料:<21天学通Java Web开发> exception对象1.exception对象用来处理错误异常.2.如果要使用exception对象,必须指定page中的isErrorPa ...

  2. 3. DNN神经网络的正则化

    1. DNN神经网络的前向传播(FeedForward) 2. DNN神经网络的反向更新(BP) 3. DNN神经网络的正则化 1. 前言 和普通的机器学习算法一样,DNN也会遇到过拟合的问题,需要考 ...

  3. 基于jQuery点击缩略图右侧滑出大图特效

    基于jQuery点击缩略图右侧滑出大图特效是一款基于strip.pkgd插件实现的点击左侧缩略图右侧滑出大图切换代码.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div ...

  4. Bootstrap tab插件的使用

    菜鸟教程链接:http://www.runoob.com/bootstrap/bootstrap-tab-plugin.html 1.例子 <!DOCTYPE html> <html ...

  5. 中文字符通过URL转给PHP处理,导致中文乱码的解决办法!

    在JS中 var content = encodeURI(encodeURI('中文字符')); 在PHP服务端接收 header("Content-type: text/html; cha ...

  6. Map 与 JavaBean 的相互装换

    目的 为了方便使用 DbUtils,在插入数据时需要传入含有占位符的 SQL 语句和对应占位符的值(数组),封装代码如下: /** * 插入实体 */ public static <T> ...

  7. 【C#】多线程解决UI界面卡死的问题

    一个经典的例子: http://www.cnblogs.com/wangchuang/p/4485797.html 问题: 都说Invoke是同步的,BeginInvoke是异步的,但为何用Begin ...

  8. Linux中cp直接覆盖不提示的方法

    新做了服务器,cp覆盖时,无论加什么参数-f之类的还是提示是否覆盖,这在大量cp覆盖操作的时候是不能忍受的. 把a目录下的文件复制到b目录 cp –r a/* b 执行上面的命令时,b存在的每个文件都 ...

  9. 放弃winform的窗体吧,改用html作界面,桌面应用程序UI的新的开发方式。

    做过很多winform项目,都为winform控件头疼不已.想实现一些漂亮的样子总是很难.我这里列举几个缺点: 1.winform控件大多是 绝对布局 ,你需要给出准确的坐标.那么在实现居中效果就会很 ...

  10. python 输出当前行号

    import sys print sys._getframe().f_lineno ---------------------------------------------------------- ...