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面向对象之四 继承
Feb 08 Javascript
jquery实现弹出层遮罩效果的简单实例
Mar 03 Javascript
HTML,CSS,JavaScript速查表推荐
Dec 02 Javascript
设计模式中的组合模式在JavaScript程序构建中的使用
May 18 Javascript
jQuery购物网页经典制作案例
Aug 19 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
Feb 14 Javascript
node.js 用socket实现聊天的示例代码
Oct 17 Javascript
Vue render函数实战之实现tabs选项卡组件
Apr 22 Javascript
浅谈Layui的eleTree树式选择器使用方法
Sep 25 Javascript
JavaScript代码模拟鼠标自动点击事件示例
Aug 07 Javascript
Vue为什么要谨慎使用$attrs与$listeners
Aug 27 Javascript
vue实现禁止浏览器记住密码功能的示例代码
Feb 03 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
国外比较好的几个的Php开源建站平台小结
2010/04/22 PHP
配置php网页显示各种语法错误
2013/09/23 PHP
PHP中使用hidef扩展代替define提高性能
2015/04/09 PHP
JS代码格式化和语法着色V2
2006/10/14 Javascript
用js重建星际争霸
2006/12/22 Javascript
setTimeout和setInterval的浏览器兼容性分析
2007/02/27 Javascript
javascript学习笔记(十六) 系统对话框(alert、confirm、prompt)
2012/06/20 Javascript
AngularJS语法详解
2015/01/23 Javascript
Jquery使用val方法读写value值
2015/05/18 Javascript
js实现文字滚动效果
2016/03/03 Javascript
jQuery插件制作的实例教程
2016/05/16 Javascript
前端弹出对话框 js实现ajax交互
2016/09/09 Javascript
浅谈js算法和流程控制
2016/12/29 Javascript
nodejs实现范围请求的实现代码
2018/10/12 NodeJs
微信小程序开发实现消息推送
2020/11/18 Javascript
关于vue里页面的缓存详解
2019/11/04 Javascript
JavaScript监听键盘事件代码实现
2020/06/03 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
2020/08/13 Javascript
JavaScript实现简易计算器小功能
2020/10/22 Javascript
videocapture库制作python视频高速传输程序
2013/12/23 Python
Python动态加载模块的3种方法
2014/11/22 Python
python避免死锁方法实例分析
2015/06/04 Python
Sanic框架路由用法实例分析
2018/07/16 Python
用python统计代码行的示例(包括空行和注释)
2018/07/24 Python
python实现五子棋小游戏
2020/03/25 Python
Django利用elasticsearch(搜索引擎)实现搜索功能
2020/11/26 Python
vue.js刷新当前页面的实例讲解
2020/12/29 Python
美体小铺英国官网:The Body Shop英国
2017/01/24 全球购物
《囚绿记》教学反思
2014/03/01 职场文书
房屋鉴定委托书范本
2014/09/23 职场文书
工作作风整顿个人剖析材料
2014/10/11 职场文书
2014年幼儿园园长工作总结
2014/12/17 职场文书
华山导游词
2015/02/03 职场文书
2015年加油站工作总结
2015/05/13 职场文书
关于远足的感想
2015/08/10 职场文书
确保减税降费落地生根,用实实在在措施
2019/07/19 职场文书