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动态呼叫函数(两种方式)
May 03 Javascript
完美解决AJAX跨域问题
Nov 01 Javascript
Javascript小技巧之生成html元素
May 15 Javascript
jQuery实现网页抖动的菜单抖动效果
Aug 07 Javascript
js表单中选择框值的获取及表单的序列化
Dec 17 Javascript
原生js编写autoComplete插件
Apr 13 Javascript
JavaScript_object基础入门(必看篇)
Jun 13 Javascript
AngularJS实践之使用ng-repeat中$index的注意点
Dec 22 Javascript
js实现彩色条纹滚动条效果
Mar 15 Javascript
el-input 标签中密码的显示和隐藏功能的实例代码
Jul 19 Javascript
浅谈vue中resetFields()使用注意事项
Aug 12 Javascript
详解gantt甘特图可拖拽、编辑(vue、react都可用 highcharts)
Nov 27 Vue.js
基于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
thinkPHP的Html模板标签使用方法
2012/11/13 PHP
初识PHP中的Swoole
2016/04/05 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
2016/05/28 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
2017/07/19 PHP
在textarea中显示html页面的javascript代码
2007/04/20 Javascript
cookie丢失问题(认证失效) Authentication (用户验证信息)也会丢失
2009/06/04 Javascript
33种Javascript 表格排序控件收集
2009/12/03 Javascript
javascript向flash swf文件传递参数值注意细节
2012/12/11 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
2013/12/22 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
2015/03/03 Javascript
JS实现的仿东京商城菜单、仿Win右键菜单及仿淘宝TAB特效合集
2015/09/28 Javascript
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
2015/12/31 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
node通过express搭建自己的服务器
2017/09/30 Javascript
vue实现PC端录音功能的实例代码
2019/06/05 Javascript
NodeJS开发人员常见五个错误理解
2020/10/14 NodeJs
[01:33:59]真人秀《加油 DOTA》 第六期
2014/09/09 DOTA
[07:49]2014DOTA2国际邀请赛 Newbee夺冠后采访xiao8坦言奖金会上交
2014/07/23 DOTA
[01:44]Ti10举办地公布
2019/08/25 DOTA
[52:06]完美世界DOTA2联赛决赛日 Inki vs LBZS 第一场 11.08
2020/11/10 DOTA
python发送邮件的实例代码(支持html、图片、附件)
2013/03/04 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
2018/05/08 Python
python使用正则筛选信用卡
2019/01/27 Python
python实现祝福弹窗效果
2019/04/07 Python
python机器人运动范围问题的解答
2019/04/29 Python
Django获取应用下的所有models的例子
2019/08/30 Python
python绘制雪景图
2019/12/16 Python
mysql有关权限的表都有哪几个
2015/04/22 面试题
SOA面试题:如何在SOA中实现松耦合
2013/07/21 面试题
创先争优制度
2014/01/21 职场文书
放飞蜻蜓反思
2014/02/05 职场文书
工作鉴定评语
2014/05/04 职场文书
年会邀请函范文
2015/01/30 职场文书
签字仪式主持词
2015/07/03 职场文书
运动会新闻稿
2015/07/17 职场文书
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技