我有一个<;ul>。我目前正在使用.bind和mouseover以及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”伪事件名,该方法接受一个
或者两个功能
此外,使用它没有性能优势,而且比仅使用mouseenter或mouseleave更笨重。我提供的答案需要更少的代码,这是实现类似目标的正确方法
编辑
这个问题已经有一段时间没有得到回答了,似乎已经获得了一些牵引力。上面的代码仍然有效,但我确实想在我的原始答案中添加一些内容
虽然我更喜欢使用mouseenter和mouseleave(帮助我理解代码中发生了什么)。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填充的元素。只需将参数更改为适当的选择器