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 相关文章推荐
jquery 表单取值常用代码
Dec 22 Javascript
jquery 打开窗口返回值实现代码
Mar 04 Javascript
JS window对象的top、parent、opener含义介绍
Dec 03 Javascript
JavaScript中数据结构与算法(三):链表
Jun 19 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
May 23 Javascript
Bootstrap Multiselect 常用组件实现代码
Jul 09 Javascript
如何理解Vue的.sync修饰符的使用
Aug 17 Javascript
讲解vue-router之什么是动态路由
May 28 Javascript
angularJS实现不同视图同步刷新详解
Oct 09 Javascript
js实现简单模态框实例
Nov 16 Javascript
从零搭一个自用的前端脚手架的方法步骤
Sep 23 Javascript
vue多个元素的样式选择器问题
Nov 29 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
使用PHPMyAdmin修复论坛数据库的图文方法
2012/01/09 PHP
用php实现选择排序的解决方法
2013/05/04 PHP
PHP获取youku视频真实flv文件地址的方法
2014/12/23 PHP
Laravel框架实现抢红包功能示例
2019/10/31 PHP
EASYUI TREEGRID异步加载数据实现方法
2012/08/22 Javascript
jquery阻止后续事件只执行第一个事件
2014/07/24 Javascript
jquery制作漂亮的弹出层提示消息特效
2014/12/23 Javascript
Bootstrap CSS组件之分页(pagination)和翻页(pager)
2016/12/17 Javascript
原生js实现类似fullpage的单页/全屏滚动
2017/01/22 Javascript
分享一个精简的vue.js 图片lazyload插件实例
2017/03/13 Javascript
react-router实现按需加载
2017/05/09 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
2019/01/14 Javascript
angular中的post请求处理示例详解
2020/06/30 Javascript
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
[35:39]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第二场 11.22
2020/11/24 DOTA
Django中redis的使用方法(包括安装、配置、启动)
2018/02/21 Python
Python实现在某个数组中查找一个值的算法示例
2018/06/27 Python
对Python中一维向量和一维向量转置相乘的方法详解
2019/08/26 Python
Python hashlib加密模块常用方法解析
2019/12/18 Python
TensorFlow实现模型断点训练,checkpoint模型载入方式
2020/05/26 Python
CSS3图片旋转特效(360/60/-360度)
2013/10/10 HTML / CSS
Wiggle中国:英国骑行、跑步、游泳 & 铁三运动装备专卖网店
2016/08/02 全球购物
党员思想汇报范文
2013/12/30 职场文书
环保建议书作文
2014/03/12 职场文书
专科生就业求职信
2014/06/22 职场文书
计算机求职信
2014/07/02 职场文书
公务员上班玩游戏检讨书
2014/09/17 职场文书
公司领导班子对照检查材料
2014/09/24 职场文书
县长“四风”对照检查材料思想汇报
2014/10/05 职场文书
2014年优秀党员材料
2014/12/18 职场文书
公司的力量观后感
2015/06/05 职场文书
婚庆公司开业主持词
2015/06/30 职场文书
安全教育培训制度
2015/08/06 职场文书
事业单位岗位说明书
2015/10/08 职场文书
2016年世界艾滋病日宣传活动总结
2016/04/01 职场文书
2019如何书写演讲稿?
2019/07/01 职场文书