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


Posted in Javascript onApril 09, 2018

在JS中代码中同一功能块中通常同时会用到单击、双击事件,但通常会遇到一个问题,就是在双击的时候即执行了一次双击事件,而且还执行了两次单击事件。此类冲突在ZTree、DHTMLX中经常遇到。

想要解决两个事件冲突,需要对单击事件进行延时,如果在此延时中又监测到单击事件,那么认为此两次单击属于一个双击事件,则只执行双击事件,并第一时间将延时定时器清理,以防止第二次单击生效。

具体代码如下:

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
漂亮的widgets,支持换肤和后期开发新皮肤(2007-4-27已更新1.7alpha)
Apr 27 Javascript
javascript web页面刷新的方法收集
Jul 02 Javascript
基于jQuery实现的Ajax 验证用户名是否存在的实现代码
Apr 06 Javascript
jquery.post用法示例代码
Jan 03 Javascript
jquery删除指定子元素代码实例
Jan 13 Javascript
js完美解决IE6不支持position:fixed的bug
Apr 24 Javascript
直接拿来用的15个jQuery代码片段
Sep 23 Javascript
servlet+jquery实现文件上传进度条示例代码
Jan 25 Javascript
详解JS构造函数中this和return
Sep 16 Javascript
angular第三方包开发整理(小结)
Apr 19 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
Oct 10 jQuery
一文了解JavaScript用Element Traversal新属性遍历子元素
Nov 27 Javascript
vue脚手架及vue-router基本使用
Apr 09 #Javascript
vue 设置proxyTable参数进行代理跨域
Apr 09 #Javascript
Angular入口组件(entry component)与声明式组件的区别详解
Apr 09 #Javascript
快速搭建vue2.0+boostrap项目的方法
Apr 09 #Javascript
webpack 模块热替换原理
Apr 09 #Javascript
Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法
Apr 09 #Javascript
浅谈webpack 自动刷新与解析
Apr 09 #Javascript
You might like
用PHP连接Oracle for NT 远程数据库
2006/10/09 PHP
ubuntu下编译安装xcache for php5.3 的具体操作步骤
2013/06/18 PHP
Smarty模板简单配置与使用方法示例
2016/05/23 PHP
PHP页面输出时js设置input框的选中值
2016/09/30 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
jQuery ajax cache缓存问题
2010/07/01 Javascript
js播放wav文件(源码)
2013/04/22 Javascript
js分页工具实例
2015/01/28 Javascript
JS+CSS实现的日本门户网站经典选项卡导航效果
2015/09/27 Javascript
jQuery树形插件jquery.simpleTree.js用法分析
2016/09/05 Javascript
Js apply方法详解
2017/02/16 Javascript
详解AngularJS ui-sref的简单使用
2017/04/24 Javascript
详解iframe跨域的几种常用方法(小结)
2019/04/29 Javascript
vue elementUI table 自定义表头和行合并的实例代码
2019/05/22 Javascript
vuex actions异步修改状态的实例详解
2019/11/06 Javascript
[01:20:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第四场 8.26
2018/08/30 DOTA
详解Python的Django框架中Manager方法的使用
2015/07/21 Python
详解Python中heapq模块的用法
2016/06/28 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
2017/08/30 Python
python+pillow绘制矩阵盖尔圆简单实例
2018/01/16 Python
Python socket模块ftp传输文件过程解析
2019/11/05 Python
Pycharm创建项目时如何自动添加头部信息
2019/11/14 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
英国大码女性时装零售商:Evans
2018/08/29 全球购物
Tom Dixon官网:英国照明及家具设计和制造公司
2019/03/01 全球购物
String和StringBuffer的区别
2015/08/13 面试题
main 主函数执行完毕后,是否可能会再执行一段代码,给出说明
2012/12/05 面试题
写给学生的新学期寄语
2014/01/18 职场文书
学习交流会主持词
2014/04/01 职场文书
市场推广策划方案
2014/06/02 职场文书
优秀校长事迹材料
2014/12/24 职场文书
事业单位年度考核个人总结
2015/02/12 职场文书
PyTorch dropout设置训练和测试模式的实现
2021/05/27 Python
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
2021/06/13 Python
nginx安装以及配置的详细过程记录
2021/09/15 Servers