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给onclick事件赋值,动态传参数实例解说
Mar 28 Javascript
jQuery数据缓存功能的实现思路及简单模拟
May 27 Javascript
js动态设置鼠标事件示例代码
Oct 30 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
May 31 Javascript
JavaScript实现简单精致的图片左右无缝滚动效果
Mar 16 Javascript
微信小程序搜索组件wxSearch实例详解
Jun 08 Javascript
webpack学习笔记之代码分割和按需加载的实例详解
Jul 20 Javascript
Bootstrap 3多级下拉菜单实例
Nov 23 Javascript
详解mpvue中小程序自定义导航组件开发指南
Feb 11 Javascript
小程序云开发之用户注册登录
May 18 Javascript
vue+express+jwt持久化登录的方法
Jun 14 Javascript
JavaScript嵌入百度地图API的最详细方法
Apr 16 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面向对象编程快速入门
2006/12/14 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
2015/04/26 PHP
详解Laravel视图间共享数据与视图Composer
2016/08/04 PHP
PHP单态模式简单用法示例
2016/11/16 PHP
laravel 去掉index.php伪静态的操作方法
2019/10/12 PHP
js中cookie的使用详细分析
2008/05/28 Javascript
jquery一般方法介绍 入门参考
2011/06/21 Javascript
jQuery把表单元素变为json对象
2013/11/06 Javascript
javascript制作sql转换为stringBuffer的小工具
2015/04/03 Javascript
Javascript简单实现面向对象编程继承实例代码
2015/11/27 Javascript
js实现C#的StringBuilder效果完整实例
2015/12/22 Javascript
在javaScript中检测数据类型的几种方式小结
2017/03/04 Javascript
简单的网页广告特效实例
2017/08/19 Javascript
Vue监听数据渲染DOM完以后执行某个函数详解
2018/09/11 Javascript
NodeJs之word文件生成与解析的实现代码
2019/04/01 NodeJs
js JSON.stringify()基础详解
2019/06/19 Javascript
layer的prompt弹出框,点击回车,触发确定事件的方法
2019/09/06 Javascript
node使用async_hooks模块进行请求追踪
2021/01/28 Javascript
详解Python中的__new__、__init__、__call__三个特殊方法
2016/06/02 Python
PyCharm设置护眼背景色的方法
2018/10/29 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
Python tkinter实现图片标注功能(完整代码)
2019/12/08 Python
matplotlib之属性组合包(cycler)的使用
2021/02/24 Python
CSS3选择器新增问题的实现
2021/01/21 HTML / CSS
amazeui树节点自动展开折叠面板并选中第一个树节点的实现
2020/08/24 HTML / CSS
英国性感内衣和睡衣品牌:Bluebella
2018/01/26 全球购物
Volcom英国官方商店:美国殿堂级滑板、冲浪、滑雪服装品牌
2019/03/13 全球购物
科颜氏英国官网:Kiehl’s英国
2019/11/20 全球购物
档案管理员岗位职责
2013/12/01 职场文书
大学生职业规划前言模板
2013/12/27 职场文书
员工培训邀请函
2014/02/02 职场文书
毕业生求职信
2014/06/10 职场文书
2014收银员工作总结范文
2014/12/16 职场文书
MySQL中一条update语句是如何执行的
2022/03/16 MySQL
Django框架中模型的用法
2022/06/10 Python