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

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

编写测试代码

引起冲突的代码:

问题效果展示:

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

解决冲突的代码:

解决问题效果展示:

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

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

我这里两个单击事件触发的时间间隔设置在等于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单击和双击事件冲突解决方案,希望对大家的学习有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索js双击和单击事件冲突、jquery单击和双击事件、ios 单击双击手势冲突、vue 单击和双击冲突、jquery双击不触发单击,以便于您获取更多的相关知识。

时间: 2024-10-31 06:31:33

jquery单击事件和双击事件冲突解决方案_jquery的相关文章

jquery 单击li防止重复加载的实现代码_jquery

因为加载内容比较慢,所以用户可能在li上不经意点击了两次,那么就会请求两次,这是我们不想看到的. 今天在javascript-jquery群上一筒子发了两个demo给我,他的方法是先将单击的li节点拷贝出来,在加载完后 在重新插回去,显然不太适合我做的功能. 正一筹莫展,想了一下,何不在li点击时加入loading图片(在ajax加载前),判断li节点上是否存在了img元素, 没有则加载ajax内容,否则不处理. 测试了可以通过,\(^o^)/. 复制代码 代码如下: <!DOCTYPE htm

jquery UI Datepicker时间控件冲突问题解决_jquery

公司里的项目由于发展较快,很多东西都没有好好梳理一下,以至于有很多的潜在的问题. 最近就遇到了一个比较坑的问题.datepicker  有两个插件库中的datepicker插件比较有名.一个是jQuery-UI,一个是bootstrap.两个的api网址分别是 然而在项目中很不巧的两个库都用到了.然后就出现了以下情况:http://jqueryui.com/datepicker/   和  http://bootstrap-datepicker.readthedocs.io/en/latest/

jquery乱码与contentType属性设置问题解决方案_jquery

今天闲的无聊,把以前遗留的问题解决一下,比如让人头痛的Jquery乱码问题.其实这方面文章已经很多了,但全面解决各种问题的很少,今天总结一下,方便自己也方便大家. 原因很简单: 其实他的中文乱码就是因为contentType没有指定编码,对于不同Jquery的版本中这个地方有不同的设置,就拿我遇到的,jquery-1.6.1和jquery-1.8.3就有不同的定义. 解决办法:在jquery-1.6.1文件中,搜索'contentType' 然后在application/x-www-form-u

自定义view-自定义View控件中怎么实现双击事件和单击事件

问题描述 自定义View控件中怎么实现双击事件和单击事件 最近写了一个自定义View控件,想要实现单击事件和双击事件,单击事件到时很容易实现,但是双击事件却不知道怎么实现,求助一下在自定义View控件下怎么实现双击事件. 解决方案 android中只有单击和其他事件,其实都是由OnTouch事件演变而来 public class MainActivity extends Activity implements OnTouchListener { private long firstClick;

单击和双击事件的冲突处理示例代码

  这篇文章主要介绍了单击和双击事件的冲突处理方法,需要的朋友可以参考下   先上代码:   <head>  <title></title>  <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>  <script type="text/javascript" language="ja

js鼠标单击和双击事件冲突问题的快速解决方法_javascript技巧

情况一 如果在一个DOM对象上同时绑定单击(click)和双击(dblclick)事件,当在这个DOM对象上发生双击事件时,第一次点击(click)会 触发一次单击(click)事件,第二次点击(连续的)也会触发双击(dblclick)事件,还是会触发单击(click)事件(IE7与 firefox). 解决方法: <button onclick="test(1)" ondblclick="test(2)"></button> <scr

单击和双击事件的冲突处理示例代码_jquery

先上代码: 复制代码 代码如下: <head> <title></title> <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script> <script type="text/javascript" language="javascript"> $(function ()

jquery单击事件执行后台方法提前执行的问题

问题描述 jquery单击事件执行后台方法提前执行的问题 我在主页末尾添加javascript代码如下: $(function(){ $(".fouct1:first").click(function(){ var a=<%=ServerIpAdd()%>; //执行一个后台方法 }); }); 可是,每次刷新页面就执行了ServerIpAdd()方法,而不是单击事件后执行ServerIpAdd()方法(记录单击特定链接的次数),请高手提供一个好的方法,实现单击某个链接以后

girdview 在不排序时,能否实现列表头单击或双击事件?

问题描述 girdview在不排序时,能否实现列表头单击或双击事件? 解决方案 解决方案二:通过扩张gridview实现参考http://www.cnblogs.com/webabcd/archive/2007/01/22/626484.html解决方案三:使用模板列,可编辑表头,加脚本事件解决方案四:能.用模板列.<asp:templatefield><headertemplate><asp:buttonrunat=server...<headertemplate&g