Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mouseEnter、mouseLeave、mouseOver、mouseOut 有什么区别?【热度: 266】 #730

Open
yanlele opened this issue May 5, 2024 · 0 comments
Labels
JavaScript JavaScript 语法部分 阿里巴巴 公司标签
Milestone

Comments

@yanlele
Copy link
Member

yanlele commented May 5, 2024

关键词:mouseEnter、mouseLeave、mouseOver、mouseOut 区别

这四个事件都与鼠标指针与元素的交互有关,不过它们之间有一些关键的差异:

  1. mouseEnter 和 mouseLeave

    • mouseEnter 事件当鼠标指针进入元素时触发,但不冒泡,即只有指定的元素可以触发此事件,其子元素不能。
    • mouseLeave 事件则是当鼠标指针离开元素时触发,同样也不冒泡。
  2. mouseOver 和 mouseOut

    • mouseOver 事件当鼠标指针移动到元素或其子元素上时触发,该事件会冒泡,即如果鼠标指针移动到其子元素上,也会触发该元素的mouseOver事件。
    • mouseOut 事件则是当鼠标指针离开元素或其子元素时触发,也会冒泡。

总结一下它们的区别:

  • 冒泡: mouseOvermouseOut 事件会冒泡(父元素也会响应这个事件),而 mouseEntermouseLeave 不会冒泡。
  • 对子元素的响应mouseOvermouseOut 会在鼠标指针移动到子元素上时也被触发,而 mouseEntermouseLeave 在鼠标指针移动到子元素上时不会被触发。

在处理具有嵌套子元素的元素时,使用 mouseEntermouseLeave 可以避免多余的事件触发,因为它们不会在鼠标从父元素移动到子元素时触发事件。(即不会对内部子元素的进入和离开反应敏感)。而 mouseOvermouseOut 更适合需要监测鼠标指针是否有移动到子元素上的情况。

@yanlele yanlele added JavaScript JavaScript 语法部分 阿里巴巴 公司标签 labels May 5, 2024
@yanlele yanlele added this to the milestone May 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
JavaScript JavaScript 语法部分 阿里巴巴 公司标签
Projects
None yet
Development

No branches or pull requests

1 participant