一、定义
1、mouseenter:在鼠标光标从元素外部首次移动到元素范围之内时触发,这个事件不冒泡。
2、mouseleave:在位于元素上方的鼠标光标移动到元素范围之外时触发,这个事件不冒泡。
3、mouseover:在鼠标指针位于一个元素外部,然后用户将其首次移入另一个元素边界之内时触发。
4、mouseout:在鼠标指针位于一个元素上方,然后用户将其移入另一个元素时触发。又移入的另一个元素可能位于前一个元素的外部,也可能是该元素的子元素。
二、两对鼠标事件的区别
其中,mouseover触发优先级高于mouseenter,mouseout触发优先级高于mouseleave
1、mouseover 和 mouseout
不论鼠标指针穿过被选元素或其子元素,都会触发 mouseover
不论鼠标指针离开被选元素还是任何子元素,都会触发 mouseout 事件。
是根据鼠标事件的target进行触发的,是一种精确触发。当为某一组件(如div)设置这两个事件时,当事件的target是该组件时,就会触发mouseover,但是当鼠标划到该组件的子组件上时,因为target改变了,所以就触发了 mouseout 事件,这往往就会造成页面元素的闪烁,反复触发移入移出事件。
2、mouseenter 和 mouseleave
只有在鼠标指针从元素外穿入被选元素(到元素内)时,才会触发 mouseenter 事件。
只有在鼠标指针从元素内穿出被选元素(到元素外)时,才会触发 mouseleave 事件。
mouseenter 和 mouseleave是根据组件在页面的范围(坐标)进行触发的。不管组件中是否有子组

文章详细阐述了mouseenter和mouseleave与mouseover和mouseout这四组鼠标事件的区别。mouseenter/mouseleave基于元素范围触发,不考虑子元素,而mouseover/mouseout根据鼠标目标(target)触发,可能因子元素导致频繁触发,因此在开发中推荐使用前者来避免闪烁问题。
最低0.47元/天 解锁文章
591

被折叠的 条评论
为什么被折叠?



