以下代码段之间是否有任何区别?
代码段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和悬停事件之间有什么区别吗?
答案 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)
哈佛使用mouseenter
和mouseleave
。
另一个是mouseover
和mouseout
。 enter/leave
不是本机事件,它们是over/out
事件的子集。
over/out
事件;当你搬回来时,你得到一个mouseout
和一个mouseover
。这对于悬停不利,因为您希望将悬停应用于元素及其子元素。
答案 3 :(得分:2)
使用悬停功能将两次拍摄事件,它将同时用于鼠标输入和鼠标输出, 例如
$("#xyz").hover(function (e) {
alert("In hover function ");
});
这会触发警报两次,一次是将鼠标放在xyz元素上,一次是将鼠标从xyz上移开。这可能会导致代码出现问题,因为在mouseienter mouseleave事件中,您可以相应地规划事件
答案 4 :(得分:1)
Hover不会为子项触发事件,而mouseenter和mouseleave会触发事件。