gpt4 book ai didi

javascript - 如果 "mousemove"和 "click"事件同时触发该怎么办?

转载 作者:行者123 更新时间:2023-12-03 21:37:54 37 4
gpt4 key购买 nike

我不知道这是否只是 Chrome 的问题(现在无法检查),但是让我们尝试下面的代码,我们将两个事件绑定(bind)到某个元素:

$("div").on({
mousemove: function(e) {
console.log("move");
},
click: function(e) {
console.log("click");
}
});

如果我们尝试单击该元素,我们会发现由于某种原因 mousemove 事件在单击后立即触发,因此在控制台中我们有:

>> ...
>> click
>> move

演示: http://jsfiddle.net/gKqVt/

请注意,mousedownmouseup 事件在同一场景下工作。

我在 SO 上看到了很多关于同一问题的问题,但没有一个(在我的搜索中)给出了如何触发 click 事件的简单想法 .

最佳答案

Mousemove 似乎与 Chrome 中的每个鼠标操作绑定(bind),因此每次鼠标“移动”时都会存储鼠标位置,并对照之前的鼠标位置进行检查,以验证它确实已“移动”。

var currentPos=[];
$("div").on({
mousemove: function(e) {
if (e.pageX!==currentPos[0] && e.pageY !==currentPos[1]){
currentPos=[e.pageX,e.pageY];
this.innerHTML = "Event: " + e.type;
console.log("move");
}
},
click: function(e) {
this.innerHTML = "Event: " + e.type;
console.log("click");
}
});

Demo | Source

关于javascript - 如果 "mousemove"和 "click"事件同时触发该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14538743/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com