jQuery 双击事件(dblclick)时,不触发单击事件(click)
来源:互联网 发布:厦大吴春明 知乎 编辑:程序博客网 时间:2024/04/30 12:14
万恶的双击事件啊!!
在jQuery的事件绑定中,执行双击事件(dblclick)时能触发两次单击事件(click)。即一个标签元素(如div等),如果元素同时绑定了单击事件(click)和双击事件(dblclick),那么执行单击事件(click)时,不会触发双击事件(dblclick), 执行双击事件(dblclick)时却会触发两次单击事件(click)。
先看一下点击事件的执行顺序:
单击(click):mousedown,mouseout,click;
双击(dblclick):mousedown,mouseout,click , mousedown,mouseout,click,dblclick;
在双击事件(dblclick),触发的两次单击事件(click)中,第一次的单击事件(click)会被屏蔽掉,但第二次不会。也就是说双击事件(dblclick)会返回一次单击事件(click)结果和一次双击事件(dblclick) 结果。而不是一次双击事件(dblclick)结果和两次单击事件结果(click)。
如此这般的话,只需消灭掉多余的一次单击事件(click),这个问题就解决了。
setTimeout
在jQuery的$(document).ready(function(){})里面直接开写:
//定义setTimeout执行方法var TimeFn = null;$('div').click(function () { // 取消上次延时未执行的方法 clearTimeout(TimeFn); //执行延时 TimeFn = setTimeout(function(){ //do function在此处写单击事件要执行的代码 },300);});$('div').dblclick(functin () { // 取消上次延时未执行的方法 clearTimeout(TimeFn); //双击事件的执行代码})
从测试结果来看,如果前后两次点击的时间在 300ms 左右的时候,还是很容易出现 click 和 dblclick 事件被“同时”调用的情况,而如果间隔的时间更短或更长,则只会有 click 或 dblclick 事件。
至此,能一定程度上避免双击(dblclick)时触发单击(click)。
- jQuery 双击事件(dblclick)时,不触发单击事件(click)
- jQuery 双击事件(dblclick)时,不触发单击事件(click)
- jQuery 双击事件(dblclick)时,不触发单击事件(click)
- jquery 双击事件(dblclick)时,不触发单击事件(click)
- jQuery 双击事件(dblclick)时,不触发单击事件(click)
- jQuery 双击事件(dblclick)时,不触发单击事件(click)
- jQuery 双击事件(dblclick)时,不触发单击事件(click)
- JQuery如何实现双击事件时不触发单击事件
- javascript同一个元素同时绑定click和dblclick事件(同时单击和双击事件)
- 解决JS双击事件dblclick触发时,同时会执行click事件中的语句
- Jquery双击事件不触发执行单击事件解决方法
- c# 托盘双击不触发单击事件
- angularJS 单击ng-click和双击ng-dblclick嵌套或者出现在同一元素 避免事件互相干扰方法
- jQuery - Events事件 - click单击
- 双击时不运行单击事件
- 单击按钮触发file的click事件
- highchart图表双击dblclick事件
- jquery 触发click等事件
- UVALive 4327 Parade(hdu 2490 Parade)
- POJ2823_Slidingwindow_solution
- redis 持久化与备份策略
- jsp学习之旅的错误记录01
- 晨会如何更好的描述自己的工作
- jQuery 双击事件(dblclick)时,不触发单击事件(click)
- starting with mongodb 2013/8/23
- 北大 ACM 1007 DNA Sorting
- 【C/C++】内存分配函数:malloc,calloc,realloc,_alloca
- 什么是钩子方法
- [draft] Oracle 高可用方案 (check SAA training notes)
- Hadoop HelloWord Examples - A Simple Sort
- STM32芯片温度的测量
- mciSendCommand 函数的使用!