javascript - Javascript双击事件问题
问题描述
我在 DOM 元素上有一个点击监听器(没有 jQuery):
element.addEventListener('click', (e) => {
// some code
});
显然,当我单击时,代码运行并且一切正常。
问题是当我双击时,代码运行两次,我不希望这种行为(当我双击时,我希望它像单击一样运行一次代码)。
解决方案
一种可能性是用于Date
检查触发该功能的最后一次点击是否小于 1 秒前:
const element = document.querySelector('div');
let lastClick = 0;
element.addEventListener('click', (e) => {
const thisClick = Date.now();
if (thisClick - lastClick < 1000) {
console.log('quick click detected, returning early');
return;
}
lastClick = thisClick;
console.log('click');
});
<div>click me</div>
如果您希望函数仅在最后一次单击超过 1 秒前运行(而不是最后一次函数正常运行超过 1 秒),请将其更改lastClick
为分配给if (thisClick - lastClick < 1000) {
条件内部:
const element = document.querySelector('div');
let lastClick = 0;
element.addEventListener('click', (e) => {
const thisClick = Date.now();
if (thisClick - lastClick < 1000) {
console.log('quick click detected, returning early');
lastClick = thisClick;
return;
}
lastClick = thisClick;
console.log('click');
});
<div>click me</div>
推荐阅读
- sql - PostgreSQL - 如何动态投射?
- php - 如何内爆多维数组?
- excel - 引用 Excel 时,AutoCAD 中的 VBA 错误不一致
- django - 未找到带有关键字参数“{'pk': '2'}' 的“post_list”的反向操作。尝试了 1 种模式:['$']
- c++ - Qt 错误在 linux ubuntu 16.04 上找不到 -lQtCore -lQtGui -lQtTest -QtOpenGl -lcore
- java - 如何使用 5.1 以上的 android 在 GPS 开放街道地图上获取位置
- azure - 来自 microsoft graph 的令牌有时会“损坏”
- javascript - 它一直说“必须转义特殊字符:<”这是什么意思?
- python - 我的 pos_tag 遍历每个字母,我需要将它应用于整个单词
- python-3.x - 从一列中具有相同值但在另一列中具有不同值的行中选择