前端小白的第一篇博客~整理一下javasrcipt DOM中,事件mouseenter与mouseover、mouseleave与mouseout的区别。
根据《javasrcipt高级程序设计》对这四个事件的个人理解如下:
- mouseenter: 在鼠标光标从元素外部首次移动到元素范围之内时触发。这个事件不冒泡,而且在光标移动到元素的后代元素上不会触发。
- mouseleave: 在鼠标光标从元素内部首次移动到元素范围之外时触发。这个事件不冒泡,而且在光标移动到元素的后代元素上不会触发。
- mouseover : 在鼠标指针位于一个元素外部,然后用户将其首次移入该元素内部时触发。(外部包括元素的子元素,元素的父元素,元素的相邻元素等)
- mouseout : 在鼠标指针位于一个元素内部,然后用户将其首次移至外部时触发。(外部包括元素的子元素,元素的父元素,元素的相邻元素等)
由此可知,在事件冒泡阶段,当光标移入的元素是没有子元素节点的元素时,mouseenter和mouseover 的触发情况是一致的,而当光标移入的元素是 含有子元素节点的元素时,mouseover的触发情况多于mouseenter,当光标从元素的子元素或元素的父元素移入该元素,元素的mouseover事件会触发,而mouseenter不会触发。
mouseleave和mouseout的区别是同样道理。