jquery单击事件和双击事件冲突解决方案


Posted in Javascript onMarch 02, 2016

本人需要给bootstrap-treeview的树节点添加双击事件。而该插件原生方法中不带双击事件功能。该插件的节点默认绑定的单击事件,由此引起了单击事件和双击事件的冲突。

编写测试代码

引起冲突的代码:

jquery单击事件和双击事件冲突解决方案

问题效果展示:

jquery单击事件和双击事件冲突解决方案

每一次触发双击事件都会引起两次单击事件

解决冲突的代码:

jquery单击事件和双击事件冲突解决方案

解决问题效果展示:

jquery单击事件和双击事件冲突解决方案

完美解决单击事件和双击事件冲突问题

这里主要用到两个HTMLDOMWindow对象中函数,settimeout(),clearTimeout()

jquery单击事件和双击事件冲突解决方案

我这里两个单击事件触发的时间间隔设置在等于300毫秒,这里需要根据实际情况而定。

源码如下:

<!DOCTYPE html>
<html>

 <head>
  <meta charset="utf-8">
  <title></title>
 </head>

 <body>
  <div>事件监控</div>
 </body>
 <script type="text/javascript" src="js/jquery.min.js"></script>
 <script type="text/javascript">
  /*$(function() {
     $("div").bind("click.a", function() { //单击事件 
      $("body").append("<p>click事件</p>");
     })
     $("div").bind("dblclick.a", function() { //双击事件 
      $("body").append("<p>dblclick事件</p>");
     })
     $("div").bind("mouseover.a", function() { //鼠标经过元素的事件 
      $("body").append("<p>mouseover事件</p>");
     })
     $("div").bind("mouseout.a", function() { //鼠标移出元素的事件 
      $("body").append("<p>mouseout事件</p>");
     })
    })*/
  $(function() {
   var timer = null;
   $("div").bind("click.a", function() { //单击事件 
    clearTimeout(timer);
    timer = setTimeout(function() { //在单击事件中添加一个setTimeout()函数,设置单击事件触发的时间间隔 
     $("body").append("<p>click事件</p>");
    }, 300);
   })
   $("div").bind("dblclick.a", function() { //双击事件 
    clearTimeout(timer); //在双击事件中,先清除前面click事件的时间处理 
    $("body").append("<p>dblclick事件</p>");
   })
   $("div").bind("mouseover.a", function() { //鼠标经过元素的事件 
    $("body").append("<p>mouseover事件</p>");
   })
   $("div").bind("mouseout.a", function() { //鼠标移出元素的事件 
    $("body").append("<p>mouseout事件</p>");
   })
  })
 </script>

</html>

以上就是jquery单击和双击事件冲突解决方案,希望对大家的学习有所帮助。

Javascript 相关文章推荐
javascript与CSS复习(《精通javascript》)
Jun 29 Javascript
jquery validate使用攻略 第四步
Jul 01 Javascript
js 有框架页面跳转(target)三种情况下的应用
Apr 09 Javascript
jQuery.Uploadify插件实现带进度条的批量上传功能
Jun 08 Javascript
ajax请求data遇到的问题分析
Jan 18 Javascript
vue页面切换到滚动页面显示顶部的实例
Mar 13 Javascript
vue 实现数字滚动增加效果的实例代码
Jul 06 Javascript
Vue中的Props(不可变状态)
Sep 29 Javascript
vue+element实现表格新增、编辑、删除功能
May 28 Javascript
layui 实现表格某一列显示图标
Sep 19 Javascript
解决layui的table插件无法多层级获取json数据的问题
Sep 19 Javascript
Javascript中的奇葩知识,你知道吗?
Jan 25 Javascript
jQuery实现只允许输入数字和小数点的方法
Mar 02 #Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
Mar 02 #Javascript
javascript求日期差的方法
Mar 02 #Javascript
基于JavaScript实现表单密码的隐藏和显示出来
Mar 02 #Javascript
jQuery判断浏览器并动态调整select宽度的方法
Mar 02 #Javascript
js实现不重复导入的方法
Mar 02 #Javascript
基于JavaScript实现智能右键菜单
Mar 02 #Javascript
You might like
php xml文件操作代码(一)
2009/03/20 PHP
php简单统计字符串单词数量的方法
2015/06/19 PHP
javaScript 判断字符串是否为数字的简单方法
2009/07/25 Javascript
js中如何复制一个对象并获取其所有属性和属性对应的值
2013/10/24 Javascript
当鼠标滑过文本框自动选中输入框内容的JS代码分享
2013/11/26 Javascript
jQuery多条件筛选如何实现
2015/11/04 Javascript
JavaScript中获取Radio被选中的值
2015/11/11 Javascript
PassWord输入框代码分享
2016/06/07 Javascript
JavaScript实现url参数转成json形式
2016/09/25 Javascript
AngularJS自定义服务与fliter的混合使用
2016/11/24 Javascript
jQuery插件zTree实现获取当前选中节点在同级节点中序号的方法
2017/03/08 Javascript
js简单实现网页换肤功能
2017/04/07 Javascript
浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预
2017/06/25 Javascript
阿里大于短信验证码node koa2的实现代码(最新)
2017/09/07 Javascript
微信小程序中上传图片并进行压缩的实现代码
2018/08/28 Javascript
javascript History对象原理解析
2020/02/17 Javascript
[13:25]VP vs VICI (BO3)
2018/06/07 DOTA
[49:08]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第一场 11.27
2020/12/01 DOTA
python实现根据窗口标题调用窗口的方法
2015/03/13 Python
在Python下尝试多线程编程
2015/04/28 Python
Python简明入门教程
2015/08/04 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
Python双精度浮点数运算并分行显示操作示例
2017/07/21 Python
Python 关于反射和类的特殊成员方法
2017/09/14 Python
python实现汽车管理系统
2018/11/30 Python
python使用PyQt5的简单方法
2019/02/27 Python
Python学习笔记之列表和成员运算符及列表相关方法详解
2019/08/22 Python
python判断无向图环是否存在的示例
2019/11/22 Python
SheIn俄罗斯:时尚女装网上商店
2017/02/28 全球购物
vue实现倒计时功能
2021/03/24 Vue.js
2015年企业员工工作总结范文
2015/05/21 职场文书
选调生挂职锻炼工作总结
2015/10/23 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
职场领导同事生日简短祝福语
2019/08/06 职场文书
公司财务制度:成本管理控制制度模板
2019/11/19 职场文书
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
2022/04/13 Java/Android