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 相关文章推荐
通过jquery还原含有rowspan、colspan的table的实现方法
Feb 10 Javascript
多个jQuery版本共存的处理方案
Mar 17 Javascript
理解javascript中的MVC模式
Jan 28 Javascript
jquery插件Jplayer使用方法简析
Apr 22 Javascript
AngularJS实现进度条功能示例
Jul 05 Javascript
vue2.0开发入门笔记之.vue文件的生成和使用
Sep 19 Javascript
vue-cli结合Element-ui基于cropper.js封装vue实现图片裁剪组件功能
Mar 01 Javascript
浅谈React Event实现原理
Sep 20 Javascript
ant-design-vue 快速避坑指南(推荐)
Jan 21 Javascript
Vue组件模板及组件互相引用代码实例
Mar 11 Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
Jul 31 Javascript
js实现上传图片到服务器
Apr 11 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
15个小时----从修改程序到自己些程序
2006/10/09 PHP
PHP 单引号与双引号的区别
2009/11/24 PHP
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
2013/06/20 PHP
php的api数据接口书写实例(推荐)
2016/09/22 PHP
php中mkdir()函数的权限问题分析
2016/09/24 PHP
Yii 2.0在Grid中格式化时间方法示例
2017/06/06 PHP
原生JS实现表单checkbook获取已选择的值
2013/07/21 Javascript
JavaScript中Math对象方法使用概述
2014/01/02 Javascript
JavaScript中变量声明有var和没var的区别示例介绍
2014/09/15 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
JS中事件冒泡和事件捕获介绍
2016/12/13 Javascript
JS简单获取当前日期时间的方法(如:2017-03-29 11:41:10 星期四)
2017/03/29 Javascript
详解vue嵌套路由-params传递参数
2017/05/23 Javascript
jquery+css实现侧边导航栏效果
2017/06/12 jQuery
微信JSAPI Ticket接口签名详解
2020/06/28 Javascript
如何重置vue打印变量的显示方式
2017/12/06 Javascript
vue中如何使用ztree
2018/02/06 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
2018/09/28 Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
2019/01/18 jQuery
Vue 3.0双向绑定原理的实现方法
2019/10/23 Javascript
手把手教你实现 Promise的使用方法
2020/09/02 Javascript
js实现点击烟花特效
2020/10/14 Javascript
[53:43]VP vs NewBee Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
Python函数式编程指南(二):从函数开始
2015/06/24 Python
Python 实用技巧之利用Shell通配符做字符串匹配
2019/08/23 Python
python实现将一维列表转换为多维列表(numpy+reshape)
2019/11/29 Python
台湾生鲜宅配:大口市集
2017/10/14 全球购物
Janie and Jack美国官网:GAP旗下的高档童装品牌
2019/09/09 全球购物
database面试题
2013/03/28 面试题
土木工程毕业生自荐信
2013/09/21 职场文书
机械专业毕业生推荐信范文
2013/11/25 职场文书
2014光棍节单身联谊活动策划书
2014/10/10 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
离婚起诉状范本
2015/05/19 职场文书
MySQL笔记 —SQL运算符
2022/01/18 MySQL
PYTHON基于Pyecharts绘制常见的直角坐标系图表
2022/04/28 Python