javasrcipt DOM中,事件mouseenter与mouseover、mouseleave与mouseout的区别

前端小白的第一篇博客~整理一下javasrcipt DOM中,事件mouseenter与mouseover、mouseleave与mouseout的区别。

根据《javasrcipt高级程序设计》对这四个事件的个人理解如下:

  1. mouseenter: 在鼠标光标从元素外部首次移动到元素范围之内时触发。这个事件不冒泡,而且在光标移动到元素的后代元素上不会触发。
  2. mouseleave: 在鼠标光标从元素内部首次移动到元素范围之外时触发。这个事件不冒泡,而且在光标移动到元素的后代元素上不会触发。
  3. mouseover   :  在鼠标指针位于一个元素外部,然后用户将其首次移入该元素内部时触发。(外部包括元素的子元素,元素的父元素,元素的相邻元素等)
  4. mouseout   :  在鼠标指针位于一个元素内部,然后用户将其首次移至外部时触发。(外部包括元素的子元素,元素的父元素,元素的相邻元素等)

由此可知,在事件冒泡阶段,当光标移入的元素是没有子元素节点的元素时,mouseenter和mouseover 的触发情况是一致的,而当光标移入的元素是 有子元素节点的元素时,mouseover的触发情况多于mouseenter,当光标从元素的子元素或元素的父元素移入该元素,元素的mouseover事件会触发,而mouseenter不会触发。

mouseleave和mouseout的区别是同样道理。



你可能感兴趣的:(javasrcipt,DOM,事件处理)