JavaScript 技巧篇-js增加延迟时间解决单击双击事件冲突,双击事件触发单击事件

简介: JavaScript 技巧篇-js增加延迟时间解决单击双击事件冲突,双击事件触发单击事件

     

js 的单双击事件同时存在会有一个问题:双击事件会同时触发单击事件,两个事件存在冲突。

我们加一个延迟时间就能很好的解决这个问题。

原理: 当接收到第一个点击时,我们先把单击事件存储在这个是全局变量 click_store 里,如果 0.3 秒内没有接收到双击事件,就去执行它,如果接收到了,我们把它清理掉,然后去执行双击事件。setTimeout() 可以实现延迟执行。

var click_store // 定义一个全局变量存储单击触发事件
document.addEventListener('click', deal_click);
document.addEventListener('dblclick', deal_dblclick);
function deal_click(e){
  click_store = setTimeout(function(e){
    // 单击触发事件,0.3s延迟
    ...
  },300);
}
function deal_dblclick(e){
  // 单击事件清理
  clearTimeout(click_store);
  // 双击触发事件
  ...
}

喜欢的点个赞❤吧!


目录
相关文章
|
6天前
|
JavaScript 前端开发
js开发:请解释事件冒泡和事件捕获。
JavaScript中的事件处理有冒泡和捕获两种方式。事件冒泡是从子元素向上级元素传递,而事件捕获则从外层元素向内层传递。`addEventListener`的第三个参数可设定事件模式,`false`或不设为冒泡,`true`为捕获。示例代码展示了如何设置。
24 2
|
4天前
|
JavaScript 前端开发 Go
动态加载与异步加载 JavaScript 详解:加载远程js,加载成功后执行回调函数
动态加载与异步加载 JavaScript 详解:加载远程js,加载成功后执行回调函数
|
4天前
|
消息中间件 存储 设计模式
JavaScript发布订阅模式:实现事件驱动编程!
JavaScript发布订阅模式:实现事件驱动编程!
|
4天前
|
设计模式 存储 消息中间件
JavaScript观察者模式:实现对象间的事件通信!
JavaScript观察者模式:实现对象间的事件通信!
|
6天前
|
移动开发 JavaScript 前端开发
Phaser和Three.js是两个非常流行的JavaScript游戏框架
【5月更文挑战第14天】Phaser是开源的2D游戏引擎,适合HTML5游戏开发,内置物理引擎和强大的图形渲染功能,适用于消消乐等2D游戏。Three.js是基于WebGL的3D库,用于创建3D场景和应用,支持各种3D对象和交互功能,广泛应用于游戏、可视化等领域。选择框架取决于项目需求,2D选Phaser,3D选Three.js。
15 4
|
6天前
|
JavaScript 前端开发 开发者
javascript事件大全
javascript事件大全
13 1
|
6天前
|
JavaScript 前端开发
Javascript的一些监听事件
Javascript的一些监听事件
13 2
|
6天前
|
JavaScript 前端开发
js的事件介绍
js的事件介绍
16 1
|
6天前
|
JavaScript 前端开发
js的事件
js的事件
15 1
|
6天前
|
JavaScript 前端开发
js的交互事件
js的交互事件
15 1