JS中双击和单击事件冲突解决

摘要:
在JS中代码中同一功能块中通常同时会用到单击、双击事件,但通常会遇到一个问题,就是在双击的时候即执行了一次双击事件,而且还执行了两次单击事件。此类冲突在ZTree、DHTMLX中经常遇到。想要解决两个事件冲突,需要对单击事件进行延时,如果在此延时中又监测到单击事件,那么认为此两次单击属于一个双击事件,则只执行双击事件,并第一时间将延时定时器清理,以防止第二次单击生效。

在JS中代码中同一功能块中通常同时会用到单击、双击事件,但通常会遇到一个问题,就是在双击的时候即执行了一次双击事件,而且还执行了两次单击事件。此类冲突在ZTreeDHTMLX中经常遇到。
想要解决两个事件冲突,需要对单击事件进行延时,如果在此延时中又监测到单击事件,那么认为此两次单击属于一个双击事件,则只执行双击事件,并第一时间将延时定时器清理,以防止第二次单击生效。

具体代码如下:

var clickFlag = null;//是否点击标识(定时器编号)
function doOnClick(...) {
    if(clickFlag) {//取消上次延时未执行的方法
        clickFlag = clearTimeout(clickFlag);
    }
	
    clickFlag = setTimeout(function() {
        // click 事件的处理
    }, 300);//延时300毫秒执行
}

function doOnDblClick(...) {
    if(clickFlag) {//取消上次延时未执行的方法
        clickFlag = clearTimeout(clickFlag);
    }
	
    // dblclick 事件的处理
}

免责声明:文章转载自《JS中双击和单击事件冲突解决》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【原创+亲测可用】JS如何区分微信浏览器、QQ浏览器和QQ内置浏览器java匿名发送邮件(不需要登录)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

js实现日期显示的一些操作

1、js获取当前日期(yyyy-mm-dd) 以下代码是获取到的当前日期: 1 var myDate = new Date(); 2 var year = myDate.getFullYear(); //获取完整的年份(4位,1970-????) 3 var month = myDate.getMonth()+1; //获取当前月...

iOS开发-------基于WKWebView的原生与JavaScript数据交互

https://blog.csdn.net/runintolove/article/details/52064268 版权 WKWebView是iOS8.0之后用以替代UIWebView的网页浏览器,包含在WebKit中,可以通过 @import WebKit 导入。 如果工程需要适配iOS7,那么请在iOS7中使用UIWebView。 如果是iOS...

C#-WebForm-JS知识:基础部分、BOM部分、DOM部分、JS事件

---恢复内容开始--- 一、基础部分: 1、JavaScript 是什么? 是一门脚本语言,是属于弱类型(语言语法很随意),C#是强类型(语言语法非常严格)(李献策lxc) 优点:JS 执行速度快 2、JS 与java有什么关系?  没有任何关系 3、JS 能做什么事情?   能控制浏览器 BOM   控制元素 DOM JS不能做什么?   不能操作文件...

JS字符串拼接优化

//请把以下用于连接字符串的JavaScript代码修改为更高效的方式 var htmlString = ‘ < div class=”container” > ’ + ‘ < ul id=”news-list” >’; for (var i = 0; i < NEWS.length; i++) {   htmlString...

用纯js实现双向数据绑定的两种方法

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <...

通过Url Protocol实现web调用本地exe,兼容谷歌IE,并实现本地验证

1.随便在网上找个注册码写入,web调用方法为<a href="openLayerManager:">调用</a> 一定要注意后面的冒号 2.这样调用的话你会发现,如果本地没有该程序,那么你怎么点击都不会有反应,这样就需要本地exe程序有无验证 3.验证,首先需要下载两个大神写的js文件example.js和protocolchec...