Answers:
您可以从jQuery文档页面尝试以下示例。这是一个不错的互动演示,非常清晰,您可以自己实际看到。
简而言之,您会注意到,当鼠标悬停在元素上时,该元素上会发生鼠标悬停事件-来自其子元素或父元素,但是仅当鼠标从该元素外部移至该元素时,才会发生鼠标进入事件。
[
.mouseover()
]会因事件冒泡而引起许多头痛。例如,在此示例中,当鼠标指针移到Inner元素上时,将向该元素发送mouseover事件,然后再向上移动到Outer。这可能会在不合时宜的时候触发绑定的鼠标悬停处理程序。有关.mouseenter()
有用的替代方法,请参见讨论。
Mouseenter和mouseleave 对事件冒泡不反应,而mouseover和mouseout 则对事件冒泡作出反应。
这是描述行为的文章。
$(document).ready(function() {
$("#outer_mouseover").bind
("Mouse Over Mouse Out",function(event){
console.log(event.type," :: ",this.id);})
$("#outer_mouseenter").bind
("Mouse enter Mouse leave",function(event){
console.log(event.type," :: ",this.id);})
});
mouseenter
“仅当鼠标从父元素移动到元素时才会发生”,这不是真的。当鼠标从元素外部更改为元素内部时,将发生此事件。鼠标来自哪个元素都没有关系。的确,鼠标经常来自父级,但并非总是如此。例如,如果父母没有填充物或边框,则鼠标可以直接从祖父母那里进入,并且mouseenter
仍会射击。实际上,它甚至可以从视口外部进入元素(如果元素恰好位于边缘),并且事件仍会触发。