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 相关文章推荐
JavaScript Object的extend是一个常用的功能
Dec 02 Javascript
JavaScript接口实现代码 (Interfaces In JavaScript)
Jun 11 Javascript
JS跨域总结
Aug 30 Javascript
js锁屏解屏通过对$.ajax进行封装实现
Jul 31 Javascript
jquery禁止回车触发表单提交
Dec 12 Javascript
javascript实现Table排序的方法
May 15 Javascript
jQuery选择器之属性过滤选择器详解
Sep 28 jQuery
js拖动滑块和点击水波纹效果实例代码
Oct 16 Javascript
js嵌套的数组扁平化:将多维数组变成一维数组以及push()与concat()区别的讲解
Jan 19 Javascript
windows下create-react-app 升级至3.3.1版本踩坑记
Feb 17 Javascript
原生js无缝轮播插件使用详解
Mar 09 Javascript
js实现鼠标拖曳效果
Dec 30 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
CI框架中site_url()和base_url()的区别
2015/01/07 PHP
Yii控制器中操作视图js的方法
2016/07/04 PHP
php session的应用详细介绍
2017/03/22 PHP
深入浅析PHP的session反序列化漏洞问题
2017/06/15 PHP
Javascript解决常见浏览器兼容问题的12种方法
2010/01/04 Javascript
JavaScript变量声明详解
2014/11/27 Javascript
javascript实现的淘宝旅行通用日历组件用法实例
2015/08/03 Javascript
Kindeditor在线文本编辑器如何过滤HTML
2016/04/14 Javascript
JS对象深度克隆实例分析
2017/03/16 Javascript
基于angular2 的 http服务封装的实例代码
2017/06/29 Javascript
js原生方法被覆盖,从新赋值原生的方法
2018/01/02 Javascript
详解Axios 如何取消已发送的请求
2018/10/20 Javascript
Nuxt.js SSR与权限验证的实现
2018/11/21 Javascript
Javascript 对象(object)合并操作实例分析
2019/07/30 Javascript
vue2路由方式--嵌套路由实现方法分析
2020/03/06 Javascript
利用node.js开发cli的完整步骤
2020/12/29 Javascript
python数据结构树和二叉树简介
2014/04/29 Python
Numpy掩码式数组详解
2018/04/17 Python
Python实现二维曲线拟合的方法
2018/12/29 Python
Django uwsgi Nginx 的生产环境部署详解
2019/02/02 Python
详解基于python的多张不同宽高图片拼接成大图
2019/09/26 Python
深入浅析Python 命令行模块 Click
2020/03/11 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
2020/04/07 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
html5-canvas中使用clip抠出一个区域的示例代码
2018/05/25 HTML / CSS
廉价航班、机票和酒店:JustFly
2018/02/07 全球购物
Daniel Wellington官方海外旗舰店:丹尼尔惠灵顿DW手表
2018/02/22 全球购物
波兰在线香水店:Perfumy.pl
2019/08/12 全球购物
医药工作者的求职信范文
2013/09/21 职场文书
专科应届毕业生求职信
2014/06/04 职场文书
村主任群众路线个人对照检查材料
2014/09/26 职场文书
大学生在校表现评语
2014/12/31 职场文书
少先队中队工作总结
2015/08/14 职场文书
2016年优秀团员事迹材料
2016/02/25 职场文书
Python 实现定积分与二重定积分的操作
2021/05/26 Python
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
2022/09/23 Servers