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图形报表插件 jqplot简介及参数详解
Oct 10 Javascript
JavaScript禁止页面操作的示例代码
Dec 17 Javascript
jQuery中eq()方法用法实例
Jan 05 Javascript
SpringMVC返回json数据的三种方式
Dec 10 Javascript
Bootstrap Chart组件使用教程
Apr 28 Javascript
Angular2数据绑定详解
Apr 18 Javascript
Mongoose中document与object的区别示例详解
Sep 18 Javascript
解决iview打包时UglifyJs报错的问题
Mar 07 Javascript
vue中render函数的使用详解
Oct 12 Javascript
Javascript Dom元素获取和添加详解
Sep 24 Javascript
谈谈IntersectionObserver懒加载的具体使用
Oct 15 Javascript
Node.js开发之套接字(socket)编程入门示例
Nov 05 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分页实例代码分享
2011/07/28 PHP
解析PHP留言本模块主要功能的函数说明(代码可实现)
2013/06/25 PHP
php学习笔记之基础知识
2014/11/08 PHP
Yii2创建控制器(createController)方法详解
2016/07/23 PHP
php获取文件名称和扩展名的方法
2017/02/07 PHP
PHP实现按之字形顺序打印二叉树的方法
2018/01/16 PHP
仿服务器端脚本方式的JS模板实现方法
2007/04/27 Javascript
利用javascript的面向对象的特性实现限制试用期
2011/08/04 Javascript
MultiSelect左右选择控件的设计与实现介绍
2013/06/08 Javascript
js实现动态改变字体大小代码
2014/01/02 Javascript
JavaScript怎么判断图片是否加载完成以便获取其尺寸
2014/05/08 Javascript
jquery自定义表格样式
2015/11/23 Javascript
JavaScript中的函数(二)
2015/12/23 Javascript
JS HTML5实现拖拽移动列表效果
2020/08/27 Javascript
详解Vue.js入门环境搭建
2017/03/17 Javascript
Vue组件的使用教程详解
2018/01/05 Javascript
vue axios请求超时的正确处理方法
2018/04/02 Javascript
Vue2.0实现调用摄像头进行拍照功能 exif.js实现图片上传功能
2018/04/28 Javascript
vue项目使用axios发送请求让ajax请求头部携带cookie的方法
2018/09/26 Javascript
浅谈JS中几种轻松处理'this'指向方式
2019/09/16 Javascript
jQuery 隐藏/显示效果函数用法实例分析
2020/05/20 jQuery
vue-video-player视频播放器使用配置详解
2020/10/23 Javascript
python实现文件分组复制到不同目录的例子
2014/06/04 Python
Python实现把json格式转换成文本或sql文件
2015/07/10 Python
用python找出那些被“标记”的照片
2017/04/20 Python
python中requests库session对象的妙用详解
2017/10/30 Python
python数据处理 根据颜色对图片进行分类的方法
2018/12/08 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
2019/11/15 Python
Python flask框架如何显示图像到web页面
2020/06/03 Python
英国户外玩具儿童游乐设备网站:TP Toys(蹦床、攀爬框架、秋千、滑梯和游戏屋)
2018/04/09 全球购物
采购部主管岗位职责
2014/01/01 职场文书
社保委托书怎么写
2014/08/02 职场文书
公司党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
《迟到》教学反思
2016/02/24 职场文书
理解深度学习之深度学习简介
2021/04/14 Python
Go语言-为什么返回值为接口类型,却返回结构体
2021/04/24 Golang