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 相关文章推荐
DHTML Slide Show script图片轮换
Mar 03 Javascript
js Dialog 实践分享
Oct 22 Javascript
js控制输入框获得和失去焦点时状态显示的方法
Jan 30 Javascript
JavaScript中定义函数的三种方法
Mar 12 Javascript
Jquery on绑定的事件 触发多次实例代码
Dec 08 Javascript
基于JavaScript实现自动更新倒计时效果
Dec 19 Javascript
javascript表达式和运算符详解
Feb 07 Javascript
详解AngularJS ng-class样式切换
Jun 27 Javascript
VueJS事件处理器v-on的使用方法
Sep 27 Javascript
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
Sep 16 Javascript
详解ECMAScript2019/ES10新属性
Dec 06 Javascript
JavaScript canvas仿代码流瀑布
Feb 10 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 调用远程url的六种方法小结
2009/11/02 PHP
UCenter 批量添加用户的php代码
2012/07/17 PHP
PHP调用JAVA的WebService简单实例
2014/03/11 PHP
PHP使用ODBC连接数据库的方法
2015/07/18 PHP
jQuery中 noConflict() 方法使用
2013/04/25 Javascript
Javascript/Jquery——简单定时器的多种实现方法
2013/07/03 Javascript
原生js和jQuery随意改变div属性style的名称和值
2014/10/22 Javascript
jQuery封装的tab选项卡插件分享
2015/06/16 Javascript
封装好的javascript前端分页插件pagination
2016/01/04 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
2016/02/17 Javascript
JQuery日期插件datepicker的使用方法
2016/03/03 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
jQuery实现简单的tab标签页效果
2016/09/12 Javascript
Bootstrap的基本应用要点浅析
2016/12/19 Javascript
JavaScript对象拷贝与赋值操作实例分析
2018/12/10 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
2018/12/12 Javascript
vue中多路由表头吸顶实现的几种布局方式
2019/04/12 Javascript
微信小程序授权登陆及每次检查是否授权实例代码
2019/09/18 Javascript
小程序点击图片实现png转jpg
2019/10/22 Javascript
微信小程序实现页面浮动导航
2020/01/08 Javascript
JS前端模块化原理与实现方法详解
2020/03/17 Javascript
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
在Windows系统上搭建Nginx+Python+MySQL环境的教程
2015/12/25 Python
在cmd命令行里进入和退出Python程序的方法
2018/05/12 Python
Python实现简单查找最长子串功能示例
2019/02/26 Python
Python要如何实现列表排序的几种方法
2020/02/21 Python
Css3新特性应用之形状总结
2016/12/08 HTML / CSS
日本最大的眼镜购物网站:Oh My Glasses
2016/11/13 全球购物
New Balance天猫官方旗舰店:始于1906年,百年慢跑品牌
2017/11/15 全球购物
加拿大鞋网:Globo Shoes
2019/12/26 全球购物
六个一活动实施方案
2014/03/21 职场文书
2014年秋季开学典礼致辞
2014/08/02 职场文书
2014收银员工作总结范文
2014/12/16 职场文书
导游词之寿县报恩寺
2020/01/19 职场文书
微信小程序APP的生命周期及页面的生命周期
2022/04/19 Javascript
如何让你的Nginx支持分布式追踪详解
2022/07/07 Servers