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 相关文章推荐
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
Dec 31 Javascript
JavaScript 对任意元素,自定义右键菜单的实现方法
May 08 Javascript
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
May 08 Javascript
js动态添加表格数据使用insertRow和insertCell实现
May 22 Javascript
通过JS动态创建一个html DOM元素并显示
Oct 15 Javascript
angularJS提交表单(form)
Feb 09 Javascript
javascript实现客户端兼容各浏览器创建csv并下载的方法
Mar 23 Javascript
JavaScript对Cookie进行读写操作实例
Jul 25 Javascript
js使用i18n实现页面国际化的方法
May 09 Javascript
快速搭建React的环境步骤详解
Nov 06 Javascript
vue中的适配px2rem示例代码
Nov 19 Javascript
原生JS实现飞机大战小游戏
Jun 09 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常用代码大全(新手入门必备)
2010/06/29 PHP
PHP中__get()和__set()的用法实例详解
2013/06/04 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
2017/09/27 PHP
jQuery隔行变色与普通JS写法的对比
2013/04/21 Javascript
json的定义、标准格式及json字符串检验
2014/05/11 Javascript
js实现非常简单的焦点图切换特效实例
2015/05/07 Javascript
AngularJS中处理多个promise的方式
2016/02/02 Javascript
Javascript之Math对象详解
2016/06/07 Javascript
jQuery基于BootStrap样式实现无限极地区联动
2016/08/26 Javascript
微信小程序 实现列表项滑动显示删除按钮的功能
2017/04/13 Javascript
JavaScript瀑布流布局实现代码
2017/05/06 Javascript
jquery.masonry瀑布流效果
2017/05/25 jQuery
微信小程序商品到详情的实现
2017/06/27 Javascript
React Navigation 使用中遇到的问题小结
2018/05/08 Javascript
详解vuex commit保存数据技巧
2018/12/25 Javascript
微信小程序跨页面传递data数据方法解析
2019/12/13 Javascript
JSONP 的原理、理解 与 实例分析
2020/05/16 Javascript
微信小程序点击滚动到指定位置的实现
2020/05/22 Javascript
[05:41]2014DOTA2西雅图国际邀请赛 小组赛7月10日TOPPLAY
2014/07/10 DOTA
[51:17]VGJ.T vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python实现连接mongodb的方法
2015/05/08 Python
怎样使用Python脚本日志功能
2016/08/14 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
2020/02/15 Python
Python多线程:主线程等待所有子线程结束代码
2020/04/25 Python
python matplotlib工具栏源码探析二之添加、删除内置工具项的案例
2021/02/25 Python
CSS3结构性伪类选择器九种写法
2012/04/18 HTML / CSS
HTML5 新表单类型示例代码
2018/03/20 HTML / CSS
美国女鞋品牌:naturalizer(娜然)
2016/08/01 全球购物
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
瑞典耳机品牌:URBANISTA
2019/12/03 全球购物
软件配置管理有什么好处
2015/04/15 面试题
责任书范本
2014/08/25 职场文书
2015年医院创卫工作总结
2015/04/22 职场文书
2015年学校消防安全工作总结
2015/10/14 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书
python套接字socket通信
2022/04/01 Python