【问题标题】:How do we make use of `mouseover` and `mouseout` event?我们如何使用 `mouseover` 和 `mouseout` 事件?
【发布时间】:2013-02-07 07:35:02
【问题描述】:

正如 JQuery 文档所说,我已经将许多行 mouseover 转换为 mouseenter 因为它不会多次触发。

http://api.jquery.com/mouseover/

mouseover 当指针移入子元素时触发

mouseenter 仅在指针移入绑定元素时触发。

即使hover 事件也可以作为 mouseenter 和 mouseleave,而不是作为 mouseover 和 mouseout。

如果mouseenter 可以做到这一切,为什么会有mouseover 事件。

对我来说,mouseover 会在您在元素上移动鼠标时意外触发。它似乎真的取决于子元素的深度。

mouseovermouseout 有没有好的用例,需要多次触发?

【问题讨论】:

  • mouseovermouseout 是官方 W3C 标准的一部分,另外两个是 Microsoft 的(有用的)发明。它们可能同时出现,这可以解释为什么现在有两种方法,并且它们在某些情况下都可能有用。现在,我了解到您想了解哪些 种情况。我只是想简要介绍一下它们的起源。
  • @Bergi 我认为这个问题与那个重复的问题不匹配,因为这个特定问题要求mouseover/mouseout 的用例,同时已经了解与mouseenter/@987654336 的区别@
  • @Bergi,我理解其中的区别,只是对用例感到好奇。

标签: javascript jquery mouseover


【解决方案1】:

据我所知,mouseover/mouseout 根本没有用例。它们存在的唯一原因是因为这些事件是由浏览器触发的,因为they are in the standard DOM event listmouseentermouseleave不是标准事件,但它们是特定于 jQuery 的构造。

我想一个用例是,如果您希望在将鼠标移出和移出事件绑定到的元素的子元素上时触发事件。我想不出任何具体的东西,但至少这个功能是可用的。如果只有mouseenter/mouseleave存在,你就别无选择了。

来自http://code.jquery.com/jquery-1.9.1.js

jQuery.each({
    mouseenter: "mouseover",
    mouseleave: "mouseout"
}, function( orig, fix ) {
    /* content snipped */

推测:jQuery 的创建者创建 mouseentermouseleave 非标准事件的原因是因为它们的行为如您所期望的那样工作 mouseover/mouseout 事件工作(即不考虑后代)。

【讨论】:

  • mouseentermouseleave 来自 IE。
  • 在 jQuery 中做 enter/leave 冒泡吗?
【解决方案2】:

因为事件包含光标的坐标。 所以如果你需要跟踪目标下的鼠标坐标,你必须使用'mouseover'

【讨论】:

  • 我以为是mousemove
猜你喜欢
  • 2011-04-13
  • 1970-01-01
  • 2017-06-01
  • 2013-01-13
  • 1970-01-01
  • 1970-01-01
  • 2014-06-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多