(如果您需要将.on() 与使用 JavaScript 填充的元素一起使用,请查看此答案中的最后一个编辑)
将此用于未使用 JavaScript 填充的元素:
$(".selector").on("mouseover", function () {
//stuff to do on mouseover
});
.hover() 有自己的处理程序:http://api.jquery.com/hover/
如果你想做多件事,把它们链接到.on() 处理程序中,如下所示:
$(".selector").on({
mouseenter: function () {
//stuff to do on mouse enter
},
mouseleave: function () {
//stuff to do on mouse leave
}
});
根据下面提供的答案,您可以使用hover 和.on(),但是:
虽然强烈建议不要使用新代码,但您可能会看到
伪事件名称“悬停”用作字符串的简写
“鼠标进入鼠标离开”。它为那些附加了一个事件处理程序
两个事件,处理程序必须检查 event.type 以确定
事件是 mouseenter 还是 mouseleave。不要混淆
使用 .hover() 方法的“悬停”伪事件名称,该方法接受一个
或两个函数。
此外,使用它并没有性能优势,而且它比仅使用 mouseenter 或 mouseleave 更庞大。我提供的答案需要更少的代码,并且是实现此类目标的正确方法。
编辑
这个问题已经有一段时间没有得到回答了,而且似乎已经引起了一些关注。上面的代码仍然有效,但我确实想在我原来的答案中添加一些东西。
虽然我更喜欢将mouseenter 和mouseleave 与.on() 一起使用(帮助我理解代码中发生了什么),但它与使用hover() 编写以下内容相同
$(".selector").hover(function () {
//stuff to do on mouse enter
},
function () {
//stuff to do on mouse leave
});
由于最初的问题确实询问他们如何正确使用on() 和hover(),我想我会更正on() 的用法,并且当时没有必要添加hover() 代码.
2012 年 12 月 11 日编辑
下面提供的一些新答案详细说明了如果使用 JavaScript 填充所讨论的 div,.on() 应该如何工作。例如,假设您使用 jQuery 的 .load() 事件填充 div,如下所示:
(function ($) {
//append div to document body
$('<div class="selector">Test</div>').appendTo(document.body);
}(jQuery));
.on() 的上述代码不成立。相反,您应该稍微修改您的代码,如下所示:
$(document).on({
mouseenter: function () {
//stuff to do on mouse enter
},
mouseleave: function () {
//stuff to do on mouse leave
}
}, ".selector"); //pass the element as an argument to .on
在.load() 事件发生后,此代码将适用于使用 JavaScript 填充的元素。只需将您的参数更改为适当的选择器即可。