js鼠标单击和双击事件冲突问题的解决方法

来源:互联网 发布:程序员很枯燥 编辑:程序博客网 时间:2024/06/09 18:50

如果在一个DOM对象上同时绑定单击(click)和双击(dblclick)事件,当在这个DOM对象上发生双击事件时,第一次点击(click)会 触发一次单击(click)事件,第二次点击(连续的)也会触发双击(dblclick)事件,还是会触发单击(click)事件(IE7与 firefox)。


<button onclick="test(1)" ondblclick="test(2)"></button><script language="javascript">var i = 1;function test(n)   {i = n;var val = setTimeout("call();",250);if(i==2){clearTimeout(val);}}function   call()   {if(i==1){alert('click');}else if(i==2){alert('dblclick');}}</script>


解释:
第一次点击记录下点击的时间,并设置单击事件的Timeout(250ms比较合适),第二次点击时判断此时点击的时间与上次点击的时间间隔,如果小于指 定的事件间隔(比如250ms),则判断为双击事件,并clear已设置的Timeout(避免触发单击事件)。

0 0
原创粉丝点击