jQuery的mouseenter-mouseleave与悬停事件之间的区别?

时间:2013-10-25 09:06:01

标签: javascript jquery difference

以下代码段之间是否有任何区别?

代码段1:

$("textarea").mouseenter(function() {
    alert("Hello mouseenter!");
});

$("textarea").mouseleave(function() {
    alert("Hello mouseleave!");
});

代码段2:

$("textarea").hover(function() {
    alert("Hello mouseenter!");
}, function() {
    alert("Hello mouseleave!");
});

我已经在Chrome和Firefox中检查了上面的代码段,但两个代码段的行为都相同。但是,我想确定一下,mouseenter-mouseleave和悬停事件之间有什么区别吗?

5 个答案:

答案 0 :(得分:2)

它们之间没有区别...... hover()方法在内部注册了mouseenter和mouseleave处理程序....

悬停 - 代码

hover: function( fnOver, fnOut ) {
    return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
}

唯一的区别是如果你想利用事件委托,在这种情况下你不能使用.hover()

答案 1 :(得分:2)

jQuery文档说:

  

调用$(selector).hover(handlerIn,handlerOut)是:

的简写      

1 $(选择器).mouseenter(handlerIn).mouseleave(handlerOut);

答案 2 :(得分:2)

哈佛使用mouseentermouseleave

另一个是mouseovermouseoutenter/leave不是本机事件,它们是over/out事件的子集。

如果你从父母搬到孩子身上,也会发生{p> over/out事件;当你搬回来时,你得到一个mouseout和一个mouseover。这对于悬停不利,因为您希望将悬停应用于元素及其子元素。

答案 3 :(得分:2)

使用悬停功能将两次拍摄事件,它将同时用于鼠标输入和鼠标输出, 例如

$("#xyz").hover(function (e) {
            alert("In hover function ");
});

这会触发警报两次,一次是将鼠标放在xyz元素上,一次是将鼠标从xyz上移开。这可能会导致代码出现问题,因为在mouseienter mouseleave事件中,您可以相应地规划事件

答案 4 :(得分:1)

Hover不会为子项触发事件,而mouseenter和mouseleave会触发事件。