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 相关文章推荐
JS+CSS实现可拖拽的漂亮圆角特效弹出层完整实例
Feb 13 Javascript
JavaScript实现添加、查找、删除元素
Jul 02 Javascript
JavaScript Canvas绘制圆形时钟效果
Aug 20 Javascript
angular4 JavaScript内存溢出问题
Mar 06 Javascript
JavaScript实现表单注册、表单验证、运算符功能
Oct 15 Javascript
Vue 页面状态保持页面间数据传输的一种方法(推荐)
Nov 01 Javascript
Nuxt.js 数据双向绑定的实现
Feb 17 Javascript
JavaScript遍历数组的三种方法map、forEach与filter实例详解
Feb 27 Javascript
js定义类的方法示例【ES5与ES6】
Jul 30 Javascript
Vue 如何使用props、emit实现自定义双向绑定的实现
Jun 05 Javascript
如何用JavaScript实现一个数组惰性求值库
May 05 Javascript
解决vue-router的beforeRouteUpdate不能触发
Apr 14 Vue.js
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数据解析代码
2010/05/26 PHP
ThinkPHP中的关联模型注意点
2014/06/16 PHP
个人写的PHP验证码生成类分享
2014/08/21 PHP
PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结
2015/09/14 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
2020/01/04 PHP
prototype 1.5 &amp; scriptaculous 1.6.1 学习笔记
2006/09/07 Javascript
获取JavaScript用户自定义类的类名称的代码
2007/03/08 Javascript
JavaScript调试工具汇总
2014/12/23 Javascript
JavaScript汉诺塔问题解决方法
2015/04/21 Javascript
jQuery实现百叶窗焦点图动画效果代码分享(附源码下载)
2016/03/14 Javascript
AngularJS入门教程引导程序
2016/08/18 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
2017/02/10 Javascript
如何提升vue.js中大型数据的性能
2019/06/21 Javascript
如何实现js拖拽效果及原理解析
2020/05/08 Javascript
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
Python和perl实现批量对目录下电子书文件重命名的代码分享
2014/11/21 Python
python选择排序算法实例总结
2015/07/01 Python
python制作爬虫并将抓取结果保存到excel中
2016/04/06 Python
将Dataframe数据转化为ndarry数据的方法
2018/06/28 Python
Python使用Beautiful Soup爬取豆瓣音乐排行榜过程解析
2019/08/15 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
2020/02/16 Python
python 实现表情识别
2020/11/21 Python
Python非单向递归函数如何返回全部结果
2020/12/18 Python
HTML5 Convas APIs方法详解
2015/04/24 HTML / CSS
英国领先的男士服装和时尚零售商:Burton
2017/01/09 全球购物
中邮全球便购:中国邮政速递物流
2017/03/04 全球购物
StubHub澳大利亚:购买或出售您的门票
2019/08/01 全球购物
介绍一下Java的安全机制
2012/06/28 面试题
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2015/09/07 面试题
教堂婚礼主持词
2014/03/14 职场文书
激励员工的口号
2014/06/16 职场文书
实习生辞职信范文
2015/03/02 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
90行Python代码开发个人云盘应用
2021/04/20 Python
使用redis实现延迟通知功能(Redis过期键通知)
2021/09/04 Redis