jquery.jstree 增加节点的双击事件代码


Posted in Javascript onJuly 27, 2010

jsTree 是基于jquery的树插件,支持拖放、复制、删除、快捷键、多选、自定义节点图标、自定义右键菜单、跨页面保存状态等等,总之我想到的它基本上都有了,而且最值得表扬的是它让人感觉一点都不慢哦。

jsTree有节点选择事件,即

.bind("select_node.jstree", function(e, data) { 
//alert(data.rslt.obj.attr("id") + ":" + data.rslt.obj.attr("rel")); 
})

其实我认为它更像是节点的单击事件,因为每次点节点的时候它都会触发,不管之前该节点是否已经被选中。

近日做个文件管理的东东,需要用到节点的双击事件,如双击某个节点打开该节点的编辑页面。
jquery.jstree 增加节点的双击事件代码
jstree虽然有双击事件,但是并非针对节点的,而是你双击树所在区域就会触发,如上图任何一个地方。

离节点双击事件最接近的应该就是节点选择事件,因此又是“照葫芦画瓢”啦。

分析
在第833行 this.get_container() 后是节点的单击事件

.delegate("a", "click.jstree", $.proxy(function (event) { 
event.preventDefault(); 
this.select_node(event.currentTarget, true, event); 
}, this))

同样我再这里插入节点双击事件

.delegate("a", "dblclick.jstree", $.proxy(function(event) { 
event.preventDefault(); 
this.dblclick_node(event.currentTarget, true, event); 
}, this))

接着,我再实现 dblclick_node 方法就可以了。

在第928行找到 select_node 的代码,比较复杂。但里面90%对于双击来说是没有用处的,如处理单选、多选、保存选择结果到cookies等。因此 dblclick_node 方法的实现要比 select_node 简单很多。

dblclick_node: function(obj, check, e) { 
obj = this._get_node(obj); 
if (obj == -1 || !obj || !obj.length) { return false; } 
this.__callback({ "obj": obj }); 
},

OK,就这样了。

使用例子
跟 select_node 用法一样

.bind("dblclick_node.jstree", function(e, data) { 
//alert(data.rslt.obj.attr("id") + ":" + data.rslt.obj.attr("rel")); 
})

改造后的代码下载  /201007/yuanma/jquery.jstree.rar
顺便说说
jstree 跟另一个插件jquery validate 是水火不容的,当两者共存时,jstree虽然也可以构造树出来,但如僵尸一般不能展开。这里mark一个,日后试试能否修改。

作者:Bruce(编程的艺术世界)

Javascript 相关文章推荐
动态加载dtree.js树treeview(示例代码)
Dec 17 Javascript
js打开新窗口方法整理
Feb 17 Javascript
JavaScript分页功能的实现方法
Apr 25 Javascript
深入解析JavaScript的闭包机制
Oct 20 Javascript
jquery实现定时自动轮播特效
Dec 10 Javascript
jquery.serialize() 函数语法及简单实例
Jul 08 Javascript
原生js实现选项卡功能
Mar 08 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
Feb 03 Javascript
vue如何根据网站路由判断页面主题色详解
Nov 02 Javascript
JS实现的A*寻路算法详解
Dec 14 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
May 13 jQuery
js 图片懒加载的实现
Oct 21 Javascript
基于jsTree的无限级树JSON数据的转换代码
Jul 27 #Javascript
XENON基于JSON变种
Jul 27 #Javascript
JS遮罩层效果 兼容ie firefox jQuery遮罩层
Jul 26 #Javascript
腾讯与新浪的通过IP地址获取当前地理位置(省份)的接口
Jul 26 #Javascript
基于Jquery的文字滚动跑马灯插件(一个页面多个滚动区)
Jul 26 #Javascript
JQuery的Validation插件中Remote验证的中文问题
Jul 26 #Javascript
基于JQuery的一句代码实现表格的简单筛选
Jul 26 #Javascript
You might like
将时间以距今多久的形式表示,PHP,js双版本
2012/09/25 PHP
解析mysql left( right ) join使用on与where筛选的差异
2013/06/18 PHP
PHP代码优化的53个细节
2014/03/03 PHP
全面解析PHP操作Memcache基本函数
2016/07/14 PHP
PHP For循环字母A-Z当超过26个字母时输出AA,AB,AC
2020/02/16 PHP
javascript 动态加载 css 方法总结
2009/07/11 Javascript
JavaScript 异步调用框架 (Part 5 - 链式实现)
2009/08/04 Javascript
Mootools 1.2教程 输入过滤第一部分(数字)
2009/09/15 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
2010/09/15 Javascript
zTree插件之多选下拉菜单实例代码
2013/11/06 Javascript
Bootstrap登陆注册页面开发教程
2016/07/12 Javascript
Javascript农历与公历相互转换的简单实例
2016/10/09 Javascript
微信小程序 删除项目工程实现步骤
2016/11/10 Javascript
JS实现字符串转驼峰格式的方法
2016/12/16 Javascript
详解vue+vueRouter+webpack的简单实例
2017/06/17 Javascript
Angular入口组件(entry component)与声明式组件的区别详解
2018/04/09 Javascript
javascript少儿编程关于返回值的函数内容
2018/05/27 Javascript
彻底揭秘keep-alive原理(小结)
2019/05/05 Javascript
详解VUE调用本地json的使用方法
2019/05/15 Javascript
cordova+vue+webapp使用html5获取地理位置的方法
2019/07/06 Javascript
Python中的__SLOTS__属性使用示例
2015/02/18 Python
Python字典中的键映射多个值的方法(列表或者集合)
2018/10/17 Python
python抓取京东小米8手机配置信息
2018/11/13 Python
python tkinter实现彩球碰撞屏保
2019/07/30 Python
Django高并发负载均衡实现原理详解
2020/04/04 Python
python 常用日期处理-- datetime 模块的使用
2020/09/02 Python
CSS3教程:新增加的结构伪类
2009/04/02 HTML / CSS
台湾团购、宅配和优惠券:17Life
2017/08/14 全球购物
法国在线药房:Shop Pharmacie
2019/11/26 全球购物
综合实践教学反思
2014/01/31 职场文书
食品业务员岗位职责
2014/03/18 职场文书
软件专业毕业生个人自我鉴定
2014/04/17 职场文书
好学生评语大全
2014/05/05 职场文书
南京南京观后感
2015/06/02 职场文书
vue.js Router中嵌套路由的实用示例
2021/06/27 Vue.js
Java Redisson多策略注解限流
2022/09/23 Java/Android