Mouseup与Click的区别

4
在一个应用于单个元素的AngularJS指令中,假设我有以下代码。
$document.on('click', function(event){
    console.log('click');
});

$document.on('mouseup', function(event){
    console.log("mouseup");
});

无论顺序如何,mouseup事件总是在click事件之前触发。这种情况是否会一直存在?如果click只是由mousedown和mouseup组成,为什么它会在注册顺序之后触发?


2
http://www.quirksmode.org/js/events_mouse.html - Arun P Johny
顺序不取决于处理程序的注册,而是取决于触发事件的顺序... 在这种情况下,mouseupclick之前被触发。 - Arun P Johny
4个回答

8

是的,这永远都是这样。 click 事件被定义为在 mouseup 事件之后立即发生,注册顺序不会影响它。


1
我需要注意哪些浏览器之间的差异? - Snowball
@Andrew 我不知道有没有相关的测试。这里有一些相关的测试:点击这里,你可以自己测试事件的顺序:点击这里 - twhb

0

顺序将是先鼠标事件,然后是点击事件。

因为你的鼠标总是会先移动,所以事件顺序将会先是鼠标事件...之后才会触发你的点击事件


0

这是因为浏览器/JS引擎按照这个顺序执行事件处理程序。


0

好的。如果点击是由鼠标按下和鼠标松开组成的,那么事件将按照这个顺序触发(按下、松开、点击(因为它由前面的两个事件组成,所以需要在它之前触发这两个事件)),这是你无法改变的,可惜。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接