我们如何利用`mouseover`和`mouseout`事件?

时间:2013-02-21 20:16:13

标签: javascript jquery mouseover

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

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

  当指针移动到子元素时,

mouseover 会触发

     仅当指针移动到绑定元素时,

mouseenter 才会触发。

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

如果mouseover可以完成所有操作,我会想知道为什么会出现mouseenter事件。

对我来说,当你在一个元素上移动鼠标时,mouseover会被无法预测地触发。它似乎真的取决于子元素的深度。

是否有mouseovermouseout的良好用例,需要多次触发?

2 个答案:

答案 0 :(得分: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一样有效工作的事件(即不考虑后代)。

答案 1 :(得分:-1)

因为事件包含光标的坐标。 因此,如果您需要跟踪目标下的鼠标坐标,则必须使用“鼠标悬停”

相关问题