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 相关文章推荐
google 搜索框添加关键字实现代码
Apr 24 Javascript
jquery插件jTimer(jquery定时器)使用方法
Dec 23 Javascript
js弹出确认是否删除对话框
Mar 27 Javascript
jQuery学习笔记之基础中的基础
Jan 19 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
Aug 24 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
Sep 19 Javascript
原生js实现移动端瀑布流式代码示例
Dec 18 Javascript
jQuery简单实现中间浮窗效果
Sep 04 Javascript
BootStrap栅格系统、表单样式与按钮样式源码解析
Jan 20 Javascript
在vue中添加Echarts图表的基本使用教程
Nov 22 Javascript
JavaScript实现的反序列化json字符串操作示例
Jul 18 Javascript
Vue请求JSON Server服务器数据的实现方法
Nov 02 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实现函数内修改外部变量值的方法示例
2018/12/28 PHP
jquery操作select详解(取值,设置选中)
2014/02/07 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
2014/10/17 Javascript
果断收藏9个Javascript代码高亮脚本
2016/01/06 Javascript
AngularJS中的按需加载ocLazyLoad示例
2017/01/11 Javascript
原生js封装自定义滚动条
2017/03/24 Javascript
React 子组件向父组件传值的方法
2017/07/24 Javascript
不使用 JS 匿名函数理由
2017/11/17 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
javascript实现点亮灯泡特效示例
2019/10/15 Javascript
Vue基础配置讲解
2019/11/29 Javascript
js实现九宫格布局效果
2020/05/28 Javascript
vant picker+popup 自定义三级联动案例
2020/11/04 Javascript
[49:31]TFT vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
[47:03]完美世界DOTA2联赛PWL S3 access vs LBZS 第一场 12.20
2020/12/23 DOTA
Python全局变量操作详解
2015/04/14 Python
TensorFlow损失函数专题详解
2018/04/26 Python
使用Python+wxpy 找出微信里把你删除的好友实例
2019/02/21 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
利用setuptools打包python程序的方法步骤
2020/01/18 Python
猫途鹰:全球领先的旅游点评社区
2017/04/07 全球购物
英国独特的时尚和生活方式品牌:JOY
2018/03/17 全球购物
自考毕业生自我鉴定
2013/11/04 职场文书
syb养殖创业计划书
2014/01/09 职场文书
新学期教师寄语
2014/04/02 职场文书
大学生创业计划书
2014/08/14 职场文书
2014年助理政工师工作总结
2014/12/19 职场文书
音乐会主持人开场白
2015/05/28 职场文书
实施意见格式范本
2015/06/05 职场文书
就业证明函
2015/06/17 职场文书
高中升旗仪式主持词
2015/07/03 职场文书
某学校的2019年度工作报告范本
2019/10/11 职场文书
创业计划书之电动车企业
2019/10/11 职场文书
MySQL去除重叠时间求时间差和的实现
2021/08/23 MySQL