似乎在jQuery中,元素上的click事件也会自动触发该元素的mousemove事件。有什么方法可以阻止这种情况吗?
这是我可以整理的最基本的测试用例。对我来说,使用触控板,单击该框会触发mousemove事件。我没有发现鼠标光标有任何移动。
更新:我在Safari,Chrome和Firefox中测试了代码。在Safari中,单击会触发鼠标移动。在Chrome / Firefox中,似乎点击不会触发鼠标移动。有趣。
答案 0 :(得分:1)
我刚刚进行了一些测试,我觉得这不是正在发生的事情。如果您没有使用元素注册mousemove事件,则不会触发任何事件。如果您正在注册一个mousemove事件,那么您应该注意到鼠标移动的最小部分(包括单击该对象时发生的移动)将导致mousemove事件被触发。
根据您要完成的任务,您可能需要查看one of the many other mouse events,或以完全不同的方式完成您的功能。 (如果您发布了这个功能的最终目标,我可以尝试为您提供帮助。)
答案 1 :(得分:1)
我也使用Safari中的遗留方法获得相同的结果。 mouseMove
上会触发额外的mouseUp
事件。示例:http://jsfiddle.net/s7r8d/
document.onmousemove = function(mouseEvent) {
mouseEvent || (mouseEvent = window.event);
var target = mouseEvent.target || mouseEvent.srcElement;
if (target.id=="dom") {
target.className = target.className=="highlight"
? ""
: "highlight";
}
}
即使尝试强制mouseUp
事件也不成功。如果确实是Safari漏洞,我们可以尝试向Apple报告此错误。
答案 2 :(得分:1)
$('h1').bind('mousemove', swapClass);
function swapClass() {
$('h1').toggleClass('highlight');
}
$('h1').mousedown(function(ev){
$("h1").unbind("mousemove");
console.log("pippo");
})
$('h1').mouseup(function(){
setTimeout(function(){
$("h1").bind("mousemove", swapClass);
},10);
});
答案 3 :(得分:0)
我想不是,只要您的鼠标位于点击区域,您也将触发mousemove事件。