我有一个<ul>在初始页面加载后填充了 javascript 的内容。我目前正在使用.bindwithmouseover和mouseout。
<ul>
.bind
mouseover
mouseout
该项目刚刚更新到 jQuery 1.7,所以我可以选择使用.on,但我似乎无法使用它hover。可以.on用hover吗?
.on
hover
编辑 :我绑定到的元素在文档加载后用 javascript 加载。这就是我使用的原因on,而不仅仅是hover.
on
( _如果您需要使用.on()用 JavaScript 填充的元素,_请查看此答案中的最后一个编辑)
.on()
将此用于未使用 JavaScript 填充的元素:
$(".selector").on("mouseover", function () { //stuff to do on mouseover });
.hover()有它自己的处理程序: http: //api.jquery.com/hover/
.hover()
如果您想做多件事,请将它们链接到.on()处理程序中,如下所示:
$(".selector").on({ mouseenter: function () { //stuff to do on mouse enter }, mouseleave: function () { //stuff to do on mouse leave } });
根据下面提供的答案,您可以使用hoverwith .on(),但是:
尽管强烈建议不要使用新代码,但您可能会看到伪事件名称“hover”用作字符串“mouseenter mouseleave”的简写。它为这两个事件附加了一个事件处理程序,处理程序必须检查 event.type 以确定事件是 mouseenter 还是 mouseleave。不要将“悬停”伪事件名称与接受一两个函数的 .hover() 方法混淆。
此外,使用它并没有性能优势,而且它比仅使用mouseenteror更庞大mouseleave。我提供的答案需要更少的代码,并且是实现此类目标的正确方法。
mouseenter
mouseleave
编辑
自从这个问题得到回答已经有一段时间了,它似乎已经获得了一些关注。上面的代码仍然有效,但我确实想在我的原始答案中添加一些内容。
虽然我更喜欢使用mouseenterand mouseleave(帮助我理解代码中发生了什么),.on()但它与编写以下内容相同hover()
hover()
$(".selector").hover(function () { //stuff to do on mouse enter }, function () { //stuff to do on mouse leave });
由于最初的问题确实询问了他们如何正确使用on()with hover(),我想我会更正 of 的用法,on()并且当时没有必要添加hover()代码。
on()
编辑 2012 年 12 月 11 日
下面提供的一些新答案详细说明了如果使用 JavaScript 填充相关问题.on()应该如何工作。div例如,假设您div使用 jQuery填充一个.load()事件,如下所示:
div
.load()
(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 填充的元素。只需将您的参数更改为适当的选择器。