jQuery中mouseenter和mouseover的区别

mouseover鼠标覆盖,不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover 事件。

mouseenter鼠标进入,只有在鼠标指针穿过被选元素时,才会触发 mouseenter 事件。

mouseenter和mouseover示例
jQuery中mouseenter和mouseover的区别

可以从W3School的示例代码可以看出,mouseenter是穿过,所以只能触发一次事件,而mouseover是位于元素上方,可以触发多次事件。

如果给div设定了一个mouseover事件,其子孙后代都可以响应这个事件。所以,一旦鼠标从父级进入自己也会触发这个效果,当从子集回到父级也会触发这种效果。

你也可以这么理解:mouseenter事件只作用于目标元素,而mouseover最用于目标元素及其后代元素。

二者的本质区别在于:

mouseenter不会冒泡,简单的说,它不会被它本身的子元素的状态影响到。但是mouseover就会被它的子元素影响到,在触发子元素的时候,mouseover会冒泡触发它的父元素,(如果想要阻止mouseover的冒泡事件就用mouseenter)