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 相关文章推荐
JS 页面自动加载函数(兼容多浏览器)
May 18 Javascript
JS 参数传递的实际应用代码分析
Sep 13 Javascript
javascript中的startWith和endWith的几种实现方法
May 07 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
Nov 13 Javascript
jquery动态添加元素事件失效问题解决方法
May 23 Javascript
node.js中的fs.truncateSync方法使用说明
Dec 15 Javascript
JS实现表单多文件上传样式美化支持选中文件后删除相关项
Sep 30 Javascript
React Native如何消除启动时白屏的方法
Aug 08 Javascript
浅谈Vue.nextTick 的实现方法
Oct 25 Javascript
Vue中render函数的使用方法
Jan 31 Javascript
webpack4与babel配合使es6代码可运行于低版本浏览器的方法
Oct 12 Javascript
Vue中使用wangeditor富文本编辑的问题
Feb 07 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
set_include_path和get_include_path使用及注意事项
2013/02/02 PHP
Codeigniter实现发送带附件的邮件
2015/03/19 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
php使用socket调用http和smtp协议实例小结
2019/07/26 PHP
javascript 跳转代码集合
2009/12/03 Javascript
js 省地市级联选择
2010/02/07 Javascript
JavaScript arguments 多参传值函数
2010/10/24 Javascript
jQuery)扩展jQuery系列之一 模拟alert,confirm(一)
2010/12/04 Javascript
基于Jquery+Ajax+Json的高效分页实现代码
2011/10/29 Javascript
jquery win 7透明弹出层效果的简单代码
2013/08/06 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
2014/01/07 Javascript
js创建表单元素并使用submit进行提交
2014/08/14 Javascript
AngularJS基础知识笔记之表格
2015/05/10 Javascript
angularjs学习笔记之双向数据绑定
2015/09/26 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
2016/01/29 Javascript
easyui combotree加载静态数据问题(选不上)解决方法
2016/12/26 Javascript
springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项
2017/04/23 Javascript
微信小程序实现刷脸登录
2018/05/25 Javascript
Vue.js组件props数据验证实现详解
2019/10/19 Javascript
[55:42]VG vs VGJ.T 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
Python处理RSS、ATOM模块FEEDPARSER介绍
2015/02/18 Python
30分钟搭建Python的Flask框架并在上面编写第一个应用
2015/03/30 Python
Python无损音乐搜索引擎实现代码
2018/02/02 Python
解决matplotlib库show()方法不显示图片的问题
2018/05/24 Python
PHP统计代码行数的小代码
2019/09/19 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
2020/01/21 Python
Python 开发工具PyCharm安装教程图文详解(新手必看)
2020/02/28 Python
白宫黑市官网:White House Black Market
2016/11/17 全球购物
医学院校毕业生自荐信范文
2014/01/01 职场文书
创业计划书——互联网商机
2014/01/12 职场文书
工会主席岗位责任制
2014/02/11 职场文书
工程质量承诺书范文
2014/03/27 职场文书
2014公司党员自我评价范文
2014/09/11 职场文书
Python实现简单的俄罗斯方块游戏
2021/09/25 Python
解析探秘fescar分布式事务实现原理
2022/02/28 Java/Android