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 相关文章推荐
JS this作用域以及GET传输值过长的问题解决方法
Aug 06 Javascript
js获取URL的参数的方法(getQueryString)示例
Sep 29 Javascript
jQuery浏览器CSS3特写兼容实例
Jan 19 Javascript
JS实现双击屏幕滚动效果代码
Oct 28 Javascript
Bootstrap源码解读下拉菜单(4)
Dec 23 Javascript
Vue2.0使用过程常见的一些问题总结学习
Apr 10 Javascript
使用Angular CLI生成 Angular 5项目教程详解
Mar 18 Javascript
基于Vue实现关键词实时搜索高亮显示关键词
Jul 21 Javascript
浅谈webpack+react多页面开发终极架构
Nov 11 Javascript
JS实现倒序输出的几种常用方法示例
Apr 13 Javascript
vue语法自动转typescript(解放双手)
Sep 18 Javascript
js实现点击生成随机div
Jan 16 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 删除数组元素
2009/01/16 PHP
详解PHP中的null合并运算符
2015/12/30 PHP
php实现按天数、星期、月份查询的搜索框
2016/05/02 PHP
tp5框架无刷新分页实现方法分析
2019/09/26 PHP
jquery.Jwin.js 基于jquery的弹出层插件代码
2012/05/23 Javascript
JS动态获取当前时间,并写到特定的区域
2013/05/03 Javascript
jquery实现文本框数量加减功能的例子分享
2014/05/10 Javascript
JS辨别访问浏览器判断是android还是ios系统
2014/08/19 Javascript
jquery处理json对象
2014/11/03 Javascript
jQuery获取上传文件的名称的正则表达式
2015/05/21 Javascript
bootstrapfileinput实现文件自动上传
2016/11/08 Javascript
zTree jQuery 树插件的使用(实例讲解)
2017/09/25 jQuery
详解Vue.directive 自定义指令
2019/03/27 Javascript
详解如何运行vue项目
2019/04/15 Javascript
vue实现简单学生信息管理
2020/05/30 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
2020/10/09 jQuery
用python登录Dr.com思路以及代码分享
2014/06/25 Python
asyncio 的 coroutine对象 与 Future对象使用指南
2016/09/11 Python
Python 异常处理Ⅳ过程图解
2019/10/18 Python
解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题
2020/06/01 Python
python链表类中获取元素实例方法
2021/02/23 Python
HTML5 Canvas阴影使用方法实例演示
2013/08/02 HTML / CSS
HTML5 CSS3实现一个精美VCD包装盒个性幻灯片案例
2014/06/16 HTML / CSS
哥德堡通行证:Gothenburg Pass
2019/12/09 全球购物
.NET面试题:什么是值类型和引用类型
2016/01/12 面试题
机电一体化专业应届本科生求职信
2013/09/27 职场文书
专升本个人自我评价
2013/12/22 职场文书
大学生饮食配送创业计划书
2014/01/04 职场文书
电台编导求职信
2014/05/06 职场文书
关于运动会的口号
2014/06/07 职场文书
教师职位说明书
2014/07/29 职场文书
群众路线对照检查材料
2014/09/22 职场文书
九华山导游词
2015/02/03 职场文书
收银员岗位职责
2015/02/03 职场文书
销售内勤岗位职责范本
2015/04/13 职场文书
浅谈@Value和@Bean的执行顺序问题
2021/06/16 Java/Android