可以使用jQuery.on和hover吗?

我有一个<ul&gt。我目前正在使用.bindmouseover以及mouseout

该项目刚刚更新为jQuery 1.7,因此我可以选择在上使用,但我似乎无法使它与悬停一起工作。是否可以将.on悬停一起使用

编辑:我绑定到的元素在文档加载后用javascript加载。这就是为什么我在上使用,而不仅仅是悬停

如果需要将.on()与JavaScript填充的元素一起使用,请查看此答案中的最后一次编辑。)

对未使用JavaScript填充的元素使用此选项:

$(.selector”).on(“鼠标悬停”,函数(){
//鼠标盖上要做的事情
});

.hover()有自己的处理程序:http://api.jquery.com/hover/

如果要执行多项操作,请在.on()处理程序中链接它们,如下所示:

$(“.selector”)。打开({
鼠标指针:函数(){
//鼠标输入时要做的事情
},
mouseleave:function(){
//鼠标离开时要做的事情
}
});

根据下面提供的答案,您可以将悬停.on()一起使用,但是:

尽管强烈反对使用新代码,但您可能会看到
伪事件名称“hover”用作字符串的缩写
“mouseenter mouseleave”。它为这些事件附加一个事件处理程序
两个事件,处理程序必须检查event.type以确定
事件是mouseenter还是mouseleave。不要混淆主题
带有.hover()方法的“hover”伪事件名,该方法接受一个
或者两个功能

此外,使用它没有性能优势,而且比仅使用mouseentermouseleave更笨重。我提供的答案需要更少的代码,这是实现类似目标的正确方法

编辑

这个问题已经有一段时间没有得到回答了,似乎已经获得了一些牵引力。上面的代码仍然有效,但我确实想在我的原始答案中添加一些内容

虽然我更喜欢使用mouseentermouseleave(帮助我理解代码中发生了什么)。on()与使用hover()编写以下内容一样

$(“.selector”).hover(函数(){
//鼠标输入时要做的事情
}, 
函数(){
//鼠标离开时要做的事情
});

由于最初的问题问他们如何正确地使用on()hover(),我想我应该纠正on()的用法,当时没有必要添加hover()代码

编辑2012年12月11日

下面提供的一些新答案详细说明了如果使用JavaScript填充所讨论的div,则.on()应该如何工作。例如,假设您使用jQuery的.load()事件填充div,如下所示:

(函数($){
//将div追加到文档体
$(“<div class=“selector”>Test</div>”).appendTo(document.body);
}(jQuery));

.on()的上述代码无效。相反,您应该稍微修改代码,如下所示:

$(文档)。在({
鼠标指针:函数(){
//鼠标输入时要做的事情
},
mouseleave:function(){
//鼠标离开时要做的事情
}
},“.selector”)//将元素作为参数传递给.on

发生.load()事件后,此代码将适用于使用JavaScript填充的元素。只需将参数更改为适当的选择器

发表评论