不知道是否只是Chrome问题(现在无法检查),但是让我们尝试下面的代码,我们将两个事件绑定到某个元素:
$("div").on({
mousemove: function(e) {
console.log("move");
},
click: function(e) {
console.log("click");
}
});
如果我们尝试单击该元素,我们会发现由于某种原因mousemove
单击后立即触发事件,因此在控制台中我们有:
>> ...
>> click
>> move
DEMO: http://jsfiddle.net/gKqVt/ http://jsfiddle.net/gKqVt/
注意mousedown
and mouseup
事件按照相同的场景进行。
我在 SO 上看到了很多关于同一问题的问题,但没有一个(在我的搜索中)给出了如何直接触发的想法click
event only.
Mousemove 似乎与 Chrome 中的每个鼠标操作绑定在一起,因此每次鼠标“移动”时都会存储鼠标位置,并对照之前的鼠标位置进行检查,以验证它确实已“移动”。
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 http://jsfiddle.net/gKqVt/8/show | Source http://jsfiddle.net/gKqVt/8/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)