2

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

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

mouseover当指针也移动到子元素时触发

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

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

这让我想知道为什么会有mouseover事件如果mouseenter可以做到这一切。

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

是否有一个好的用例mouseoverandmouseout需要多次触发?

4

2 回答 2

1

mouseover据我所知, /根本没有用例mouseout。它们存在的唯一原因是因为这些事件是由浏览器触发的,因为它们位于标准 DOM 事件列表中mouseenter并且mouseleave不是标准事件,它们是特定于 jQuery 的构造。

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

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

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

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

于 2013-02-21T20:27:08.420 回答
-1

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

于 2013-02-21T20:22:54.597 回答