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 相关文章推荐
JavaScript 事件冒泡简介及应用
Jan 11 Javascript
JavaScript字符串String和Array操作的有趣方法
Dec 18 Javascript
div模拟滚动条效果示例代码
Oct 16 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
Nov 22 Javascript
js的参数有长度限制吗?发现不能超过2083个字符
Apr 20 Javascript
jquery简单实现外部链接用新窗口打开的方法
May 30 Javascript
基于jQuery Circlr插件实现产品图片360度旋转
Sep 20 Javascript
react开发中如何使用require.ensure加载es6风格的组件
May 09 Javascript
JQueryMiniUI按照时间进行查询的实现方法
Jun 07 jQuery
JS实现颜色的10进制转化成rgba格式的方法
Sep 04 Javascript
vue+element导航栏高亮显示的解决方式
Nov 12 Javascript
jQuery实现倒计时功能完整示例
Jun 01 jQuery
基于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 excel reader读取excel内容存入数据库实现代码
2012/12/06 PHP
php基于mcrypt的加密解密实例
2014/10/27 PHP
Yii rules常用规则示例
2016/03/15 PHP
jquery select(列表)的操作(取值/赋值)
2011/03/16 Javascript
JQuery中根据属性或属性值获得元素(6种情况获取方法)
2013/01/17 Javascript
利用jquery.qrcode在页面上生成二维码且支持中文
2014/02/12 Javascript
JS数组的遍历方式for循环与for...in
2014/07/31 Javascript
JavaScript获取Url里的参数
2014/12/18 Javascript
谈谈AngularJs中的隐藏和显示
2015/12/09 Javascript
js简单判断flash是否加载完成的方法
2016/06/21 Javascript
JavaScript初学者必看“new”
2017/06/12 Javascript
ES6学习教程之块级作用域详解
2017/10/09 Javascript
bootstrap Table的一些小操作
2017/11/01 Javascript
vue中如何使用ztree
2018/02/06 Javascript
js限制输入框只能输入数字(onkeyup触发)
2018/09/28 Javascript
node.js命令行教程图文详解
2019/05/27 Javascript
[47:04]LGD vs infamous Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
Python使用三种方法实现PCA算法
2017/12/12 Python
python中实现数组和列表读取一列的方法
2018/04/03 Python
Python 数据处理库 pandas进阶教程
2018/04/21 Python
Python编写带选项的命令行程序方法
2019/08/13 Python
python超时重新请求解决方案
2019/10/21 Python
python根据文本生成词云图代码实例
2019/11/15 Python
python 将视频 通过视频帧转换成时间实例
2020/04/23 Python
Python3自动生成MySQL数据字典的markdown文本的实现
2020/05/07 Python
Python 串口通信的实现
2020/09/29 Python
python3实现名片管理系统(控制台版)
2020/11/29 Python
HTML5的Geolocation地理位置定位API使用教程
2016/05/12 HTML / CSS
夏尔巴人登珠峰品牌:Sherpa Adventure Gear
2018/02/08 全球购物
Lampegiganten丹麦:欧洲领先的照明网上商店
2018/04/25 全球购物
主要的Ajax框架都有什么
2013/11/14 面试题
天猫活动策划方案
2014/08/21 职场文书
2014年乡镇纪委工作总结
2014/12/19 职场文书
2014年加油站站长工作总结
2014/12/23 职场文书
初中军训感想
2015/08/07 职场文书