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 相关文章推荐
神奇的代码 通杀各种网站-可随意修改复制页面内容
Jul 17 Javascript
清除网页历史记录,屏蔽后退按钮!
Dec 22 Javascript
获取URL地址中的文件名和参数的javascript代码
Sep 02 Javascript
window.parent与window.openner区别介绍
Apr 12 Javascript
js函数的引用, 关于内存的开销
Sep 17 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
Dec 11 Javascript
JavaScript判断undefined类型的正确方法
Jun 30 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
Dec 18 Javascript
JavaScript 事件流、事件处理程序及事件对象总结
Apr 01 Javascript
bootstrap paginator分页前后台用法示例
Jun 17 Javascript
angular动态删除ng-repaeat添加的dom节点的方法
Jul 20 Javascript
vue-cli 3.0 自定义vue.config.js文件,多页构建的方法
Sep 19 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 Ajax乱码
2008/04/09 PHP
浅析php适配器模式(Adapter)
2014/11/25 PHP
PHP微信API接口类
2016/08/22 PHP
php分页原理 分页代码 分页类制作教程
2016/09/23 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
2018/05/24 PHP
php实现小程序支付完整版
2018/10/09 PHP
PHP数据对象映射模式实例分析
2019/03/29 PHP
颜色选择器 Color Picker,IE,Firefox,Opera,Safar
2010/11/25 Javascript
jquery 删除cookie失效的解决方法
2013/11/12 Javascript
Javascript基础教程之数据类型 (字符串 String)
2015/01/18 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
求js数组的最大值和最小值的四种方法
2017/03/03 Javascript
关于vuex的学习实践笔记
2017/04/05 Javascript
javascript简单写的判断电话号码实例
2017/05/24 Javascript
深入理解Nodejs Global 模块
2017/06/03 NodeJs
vue上传图片组件编写代码
2017/07/26 Javascript
Vue 2.0学习笔记之Vue中的computed属性
2017/10/16 Javascript
Vue.js项目中管理每个页面的头部标签的两种方法
2018/06/25 Javascript
解决Layui中layer报错的问题
2019/09/03 Javascript
vue路由守卫及路由守卫无限循环问题详析
2019/09/05 Javascript
Node配合WebSocket做多文件下载以及进度回传
2019/11/07 Javascript
解决echarts中横坐标值显示不全(自动隐藏)问题
2020/07/20 Javascript
vuex的数据渲染与修改浅析
2020/11/26 Vue.js
JavaScript中条件语句的优化技巧总结
2020/12/04 Javascript
Python安装使用命令行交互模块pexpect的基础教程
2016/05/12 Python
Python中datetime模块参考手册
2017/01/13 Python
pyqt远程批量执行Linux命令程序的方法
2019/02/14 Python
MATLAB数学建模之画图汇总
2020/07/16 Python
Python3以GitHub为例来实现模拟登录和爬取的实例讲解
2020/07/30 Python
使用CSS3的box-sizing属性解决div宽高被内边距撑开的问题
2016/06/28 HTML / CSS
电信营业员自我评价分享
2014/01/17 职场文书
大二自我鉴定
2014/01/31 职场文书
国际金融专业自荐信
2014/07/05 职场文书
企业领导班子四风对照检查材料
2014/09/27 职场文书
2019生态环境保护倡议书!
2019/07/03 职场文书
python解析json数据
2022/04/29 Python