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 相关文章推荐
HTML页面登录时的JS验证方法
May 28 Javascript
javascript跨域方法、原理以及出现问题解决方法(详解)
Aug 06 Javascript
jQuery EasyUI 入门必看
Jun 03 Javascript
深入理解JS正则表达式---分组
Jul 18 Javascript
微信小程序动态显示项目倒计时效果
Jun 13 Javascript
浅谈webpack下的AOP式无侵入注入
Nov 12 Javascript
微信小程序实现城市列表选择
Jun 05 Javascript
详解webpack+ES6+Sass搭建多页面应用
Nov 05 Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
May 29 Javascript
JavaScript的查询机制LHS和RHS解析
Aug 16 Javascript
2020京东618叠蛋糕js脚本(亲测好用)
Jun 02 Javascript
vue实现循环滚动列表
Jun 30 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 内存缓存加速功能memcached安装与用法
2009/09/03 PHP
从零开始学YII2框架(四)扩展插件yii2-kartikgii
2014/08/20 PHP
新浪SAE搭建PHP项目教程
2015/01/28 PHP
6个超实用的PHP代码片段
2015/08/10 PHP
JavaScript CSS修改学习第三章 修改样式表
2010/02/19 Javascript
jquery 学习之一 对象访问
2010/11/23 Javascript
jQuery实现用户注册的表单验证示例
2013/08/28 Javascript
Java/JS获取flash高宽的具体方法
2013/12/27 Javascript
javascript中验证大写字母、数字和中文
2014/01/15 Javascript
jquery ui resize 中border-box的bug修正
2015/04/26 Javascript
JS实现将数字金额转换为大写人民币汉字的方法
2016/08/02 Javascript
原生js实现瀑布流布局
2017/03/08 Javascript
用vue和node写的简易购物车实现
2017/04/25 Javascript
nodejs后台集成ueditor富文本编辑器的实例
2017/07/11 NodeJs
JS实现的base64加密解密操作示例
2018/04/18 Javascript
JavaScript实现星级评价效果
2019/05/17 Javascript
javascript关于“时间”的一次探索
2019/07/24 Javascript
JS如何实现封装列表右滑动删除收藏按钮
2020/07/23 Javascript
Vue触发input选取文件点击事件操作
2020/08/07 Javascript
python机器学习实战之最近邻kNN分类器
2017/12/20 Python
用十张图详解TensorFlow数据读取机制(附代码)
2018/02/06 Python
python微信跳一跳系列之自动计算跳一跳距离
2018/02/26 Python
python利用requests库进行接口测试的方法详解
2018/07/06 Python
python实现读取excel文件中所有sheet操作示例
2019/08/09 Python
解决python web项目意外关闭,但占用端口的问题
2019/12/17 Python
python读取图片颜色值并生成excel像素画的方法实例
2021/02/19 Python
浅谈html5之sse服务器发送事件EventSource介绍
2017/08/28 HTML / CSS
viagogo英国票务平台:演唱会、体育比赛、戏剧门票
2017/03/24 全球购物
会计自我鉴定范文
2013/10/06 职场文书
城市规划毕业生求职信
2013/10/10 职场文书
质检部岗位职责
2013/11/11 职场文书
食品厂厂长岗位职责
2014/01/30 职场文书
安全大检查实施方案
2014/02/22 职场文书
法人委托书范本格式
2014/09/15 职场文书
MySQL数据库实验实现简单数据库应用系统设计
2022/06/21 MySQL
python高温预警数据获取实例
2022/07/23 Python