bootstrap-treeview自定义双击事件实现方法


Posted in Javascript onJanuary 09, 2016

bootstrap-treeview是一款效果非常酷的基于bootstrap的jQuery多级列表树插件。该jQuery插件基于Twitter Bootstrap,以简单和优雅的方式来显示一些继承树结构,如视图树、列表树等等。但是不知为什么这个插件没有自带双击事件。
经过多次测试,使用方法$('#tree').dblclick( function () {})和方法$('#tree').on('dblclick',function(){})都不起作用!百思不得其解。最后救助大神,问题解决了,但是好像不太优雅但最终还是可以交差了。

这个解决方案中使用到了bootstrap-treeview自带的两个事件"nodeSelected"和"nodeUnselected".如果在treeview的节点上双击一定会触发选中事件和取消选中事件,计算这两个时间的时间间隔就可以模拟出双击事件的效果了。双击事件每次点击鼠标左键的间隔,人为操作300毫秒足够。

具体代码如下:

<!DOCTYPE html>
<html>

 <head>
  <meta charset="utf-8" />
  <title></title>
  <link href="css/bootstrap.css" rel="stylesheet" />
 </head>

 <body>
  <div id="tree" style="width: 400px;height: 1000px;margin-left: auto;margin-right: auto;"></div>
  <div id="testDate"></div>
  <script src="js/jquery.js"></script>
  <script src="js/bootstrap-treeview.js"></script>
  <script type="text/javascript">
   //获取树形结构列表数据
   function getTree() {
    var tree = [{
     text: "Parent 1",
     nodes: [{
      text: "Child 1",
      nodes: [{
       text: "Grandchild 1"
      }, {
       text: "Grandchild 2"
      }]
     }, {
      text: "Child 2"
     }]
    }, {
     text: "Parent 2"
    }, {
     text: "Parent 3"
    }, {
     text: "Parent 4"
    }, {
     text: "Parent 5"
    }];
    return tree;
   }
   
   //初始化树形结构列表
   $('#tree').treeview({
    data: getTree()
   });
   
   //最后一次触发节点Id
   var lastSelectedNodeId = null;
   //最后一次触发时间
   var lastSelectTime = null;
   
   //自定义业务方法
   function customBusiness(data){
    alert("双击获得节点名字: "+data.text);
   }

   function clickNode(event, data) {
    if (lastSelectedNodeId && lastSelectTime) {
     var time = new Date().getTime();
     var t = time - lastSelectTime;
     if (lastSelectedNodeId == data.nodeId && t < 300) {
      customBusiness(data);
     }
    }
    lastSelectedNodeId = data.nodeId;
    lastSelectTime = new Date().getTime();
   }
   
   //自定义双击事件
   function customDblClickFun(){
    //节点选中时触发
    $('#tree').on('nodeSelected', function(event, data) {
     clickNode(event, data)
    });
    //节点取消选中时触发
    $('#tree').on('nodeUnselected', function(event, data) {
     clickNode(event, data)
    });
   }
   $('#tree').dblclick( function () { alert("Hello World!"); });
   $(document).ready(function() {
    //customDblClickFun();
   });
  </script>
 </body>

</html>

粗滤讲解:

最主要的全局变量:lastSelectedNodeId,lastSelectedNodeId

最主要的方法:clickNode()

上面这个方法主要用来判断选中事件和取消选中事件操作的目标是否是一个且时间间隔是否足够小。符合这两个条件客户就是想触发双击事件。可以再函数customBusiness中自定义业务逻辑。

如果大家还想深入学习,可以点击这里进行学习,再为大家附两个精彩的专题:Bootstrap学习教程 Bootstrap实战教程

以上就是本文的详细内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
指定js可访问其它域名的cookie的方法
Sep 18 Javascript
js 表格隔行颜色
Dec 02 Javascript
Lazy Load 延迟加载图片的jQuery插件中文使用文档
Oct 18 Javascript
让新消息在网页标题闪烁提示的jQuery代码
Nov 04 Javascript
javascript函数式编程程序员的工具集
Oct 11 Javascript
浅析jQuery Mobile的初始化事件
Dec 03 Javascript
使用Sticky组件实现带sticky效果的tab导航和滚动导航的方法
Mar 22 Javascript
jQuery 3.0十大新特性最终版发布
Jul 14 Javascript
微信小程序 scroll-view组件实现列表页实例代码
Dec 14 Javascript
微信小程序 动态绑定数据及动态事件处理
Mar 14 Javascript
Vue中div contenteditable 的光标定位方法
Aug 25 Javascript
微信小程序利用云函数获取手机号码
Dec 17 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
Jan 08 #Javascript
学习JavaScript设计模式之状态模式
Jan 08 #Javascript
jQuery CSS3相结合实现时钟插件
Jan 08 #Javascript
js实现对ajax请求面向对象的封装
Jan 08 #Javascript
javascript弹性运动效果简单实现方法
Jan 08 #Javascript
javascript运动效果实例总结(放大缩小、滑动淡入、滚动)
Jan 08 #Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
Jan 08 #Javascript
You might like
蝙蝠侠:侠影之谜
2020/03/04 欧美动漫
php守护进程 加linux命令nohup实现任务每秒执行一次
2011/07/04 PHP
php使用APC实现实时上传进度条功能
2015/10/26 PHP
必须收藏的php实用代码片段
2016/02/02 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
js 数组克隆方法 小结
2010/03/20 Javascript
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
web页面数据展示新想法(json)
2010/06/08 Javascript
让你的博客飘雪花超出屏幕依然看得见
2013/01/04 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
js采用map取到id集合组并且实现点击一行选中一行
2013/12/16 Javascript
javascript字符串对象常用api函数小结(连接,替换,分割,转换等)
2016/09/20 Javascript
详解javascript中对数据格式化的思考
2017/01/23 Javascript
AngularJS中下拉框的基本用法示例
2017/10/11 Javascript
Vue单页及多页应用全局配置404页面实践记录
2018/05/22 Javascript
浅析Python的web.py框架中url的设定方法
2016/07/11 Python
Python中第三方库Requests库的高级用法详解
2017/03/12 Python
Python实现霍夫圆和椭圆变换代码详解
2018/01/12 Python
如何利用Python分析出微信朋友男女统计图
2019/01/25 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
简单了解django缓存方式及配置
2019/07/19 Python
tensorflow实现将ckpt转pb文件的方法
2020/04/22 Python
用 Python 制作地球仪的方法
2020/04/24 Python
keras.utils.to_categorical和one hot格式解析
2020/07/02 Python
python request 模块详细介绍
2020/11/10 Python
Molly Bracken法国电子商店:法国女性时尚品牌
2019/07/24 全球购物
4s店总经理岗位职责
2013/12/31 职场文书
经典广告词大全
2014/03/14 职场文书
房屋转让协议书范本
2014/04/11 职场文书
慈善晚会策划方案
2014/05/14 职场文书
应聘教师求职信范文
2015/03/20 职场文书
商场广播稿范文
2015/08/19 职场文书
运动会100米广播稿
2015/08/19 职场文书
学会掌握自己命运的十条黄金法则:
2019/08/08 职场文书
python3.7.2 tkinter entry框限定输入数字的操作
2021/05/22 Python