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 相关文章推荐
Prototype中dom对象方法汇总
Sep 17 Javascript
node.js中的fs.rmdir方法使用说明
Dec 16 Javascript
使用jQuery给input标签设置默认值
Jun 20 Javascript
JS实现可编辑的后台管理菜单功能【附demo源码下载】
Sep 13 Javascript
fullCalendar中文API官方文档
Feb 07 Javascript
javascript实现二叉树的代码
Jun 08 Javascript
深入理解Vuex 模块化(module)
Sep 26 Javascript
AngularJS 监听变量变化的实现方法
Oct 09 Javascript
微信小程序如何获取手机验证码
Nov 04 Javascript
JavaScript作用域链实例详解
Jan 21 Javascript
layui文件上传控件带更改后数据传值的方法
Sep 23 Javascript
js实现页面导航层级指示效果
Aug 25 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
phpmailer在服务器上不能正常发送邮件的解决办法
2014/07/08 PHP
使用array_map简单搞定PHP删除文件、删除目录
2014/10/29 PHP
又十个超级有用的PHP代码片段
2015/09/24 PHP
PHP实现根据时间戳获取周几的方法
2016/02/26 PHP
mongodb和php的用法详解
2019/03/25 PHP
laravel 模型查询按照whereIn排序的示例
2019/10/16 PHP
某人初学javascript的时候写的学习笔记
2010/12/30 Javascript
用javascript判断IE版本号简单实用且向后兼容
2013/09/11 Javascript
必备的JS调试技巧汇总
2016/07/20 Javascript
javaScript中定义类或对象的五种方式总结
2016/12/04 Javascript
js装饰设计模式学习心得
2018/02/17 Javascript
vue生成token并保存到本地存储中
2018/07/17 Javascript
如何为vuex实现带参数的 getter和state.commit
2019/01/04 Javascript
微信小程序开发之转发分享功能
2019/10/22 Javascript
微信小程序 自定义弹窗实现过程(附代码)
2019/12/05 Javascript
使用 Vue-TCB 快速在 Vue 应用中接入云开发的方法
2020/02/10 Javascript
Python中的urllib模块使用详解
2015/07/07 Python
Python语言描述随机梯度下降法
2018/01/04 Python
python+matplotlib演示电偶极子实例代码
2018/01/12 Python
Python实现决策树C4.5算法的示例
2018/05/30 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
2019/07/02 Python
python如何实现单链表的反转
2020/02/10 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
Python修改列表值问题解决方案
2020/03/06 Python
欧舒丹澳洲版:L’OCCITANE
2017/07/17 全球购物
DJI大疆德国官方商城:大疆无人机
2018/09/01 全球购物
AJax面试题
2014/11/25 面试题
机电一体化专业应届本科生求职信
2013/09/27 职场文书
大家检讨书5000字
2014/02/03 职场文书
公益广告语集锦
2014/03/13 职场文书
追悼会主持词
2014/03/20 职场文书
实习生岗位职责
2014/04/12 职场文书
企业宣传标语
2014/06/09 职场文书
认真学习保证书
2015/02/26 职场文书
社区低保工作总结2015
2015/07/23 职场文书
Python爬取某拍短视频
2021/06/11 Python