click与dblclick事件冲突解决方法
2014-05-05 10:31
316 查看
一个DOM元素,如:div,既绑定了 click 事件,又绑定了 dblclick 事件,这两个事件分别要做独立的事情。事件处理上没有冲突,都可以各自完成各自的操作。双击的时候虽然是执行了 dblclick 事件,但是在这之前,也执行了 click 事件,那么,如何来禁止或者说屏蔽这次多余的 click 事件呢?本文将提供给您一个比较好的解决办法。
情况分析:
首先,来了解一下点击事件发生的先后顺序:
单击:mousedown, mouseup, click
双击:mousedown, mouseup, click, mousedown, mouseup, click, dblclick
由此看来,dblclick 事件发生之前,实际上发生了两次 click 事件。其中,第一次的 click 是会被屏蔽掉,但是第二次则不会,所以就出现在双击的时候,也触发 click 事件。
解决办法:
知道了原因,接下来自然就是想办法把这次 click 给屏蔽掉,但是由于各浏览器均未提供直接去停止事件的方法,所以值得改变思路。
由于我们只需要屏蔽一次 click 事件即可,由此联想到,可以利用 setTimeout() 方法来延时完成 click 事件的处理,在需要停止 click 的时候利用 clearTimeout() 方法停止这一事件的处理。这样,就可以比较容易的写出如下的 javascript 代码:
情况分析:
首先,来了解一下点击事件发生的先后顺序:
单击:mousedown, mouseup, click
双击:mousedown, mouseup, click, mousedown, mouseup, click, dblclick
由此看来,dblclick 事件发生之前,实际上发生了两次 click 事件。其中,第一次的 click 是会被屏蔽掉,但是第二次则不会,所以就出现在双击的时候,也触发 click 事件。
解决办法:
知道了原因,接下来自然就是想办法把这次 click 给屏蔽掉,但是由于各浏览器均未提供直接去停止事件的方法,所以值得改变思路。
由于我们只需要屏蔽一次 click 事件即可,由此联想到,可以利用 setTimeout() 方法来延时完成 click 事件的处理,在需要停止 click 的时候利用 clearTimeout() 方法停止这一事件的处理。这样,就可以比较容易的写出如下的 javascript 代码:
相关文章推荐
- js不完美解决click和dblclick事件冲突问题
- JS中touchstart事件与click事件冲突的解决方法
- 不完美解决click和dblclick事件冲突问题
- 双击和单击事件冲突解决方法
- 双击和单击事件冲突解决方法
- 重复提交及textbox和button事件冲突解决方法
- ViewPager和SlidingPaneLayout的滑动事件冲突解决方法
- andriod item内checked的setOnClickListener事件和setOnItemClickListener事件冲突解决办法
- javascript事件, 解决mousedown和click冲突事件, 鼠标事件, 键盘事件, 文本事件用法简介
- jquery点击click事件和blur事件冲突如何解决
- Android中view移动和click冲突的解决方法
- Apple 移动设备绑定动态生成元素点击事件$(document).on('click',element,callback)失效解决方法
- jquery技巧总结-jQuery对象,集合,方法扩展,事件处理,特效,解决冲突
- 两种方法解决js中touch和click冲突问题
- ListView中的Item点击事件和子控件的冲突或者item点击没有反应的解决的方法
- ViewPager禁止滑动以及它与内层滑动控件水平方向上事件冲突的解决方法
- Android view 滑动事件冲突解决方法(理论篇)
- Android 中SwipeRefreshLayout与ViewPager滑动事件冲突解决方法
- iOS的手势事件和可滚动视图(tableView、collectionView...)的触摸事件冲突的解决方法