我正在尝试使用回调函数创建悬停效果。似乎效果只能在回调函数上触发,而不是在init悬停时触发。我想知道这里是否有人可以帮助我。非常感谢。
$("img").live("hover", function () {
// hover in
$(this).css("z-index", 1);
$(this).animate({
height: "35%",
width: "35%",
left: "-=50",
top: "-=50"
}, "fast");
}, function () { //only the following codes will be triggered.
// hover out
$(this).css("z-index", 0);
$(this).animate({
height: "15%",
width: "15%",
left: "+=50",
top: "+=50"
}, "fast");
});
img是通过ajax调用生成的,不确定它是否相关
<div id='image_layout'>
<img src='a.jpg' />
<img src='b.jpg' />
<img src='c.jpg' />
</div>
答案 0 :(得分:3)
live()
已被弃用,并且它确实不会那样工作,但如果您使用的是jQuery 1.7+,则应该使用on()
将事件委托给最近的非动态父级,I在示例中将使用document
,您将使用与Ajax一起插入的图像最接近的父项替换document
,如果未动态插入该元素,则可能#image_layout
:
$(document).on({
mouseenter: function() {
$(this).css("z-index", 1).animate({
height: "35%",
width: "35%",
left: "-=50",
top: "-=50"
}, "fast");
},
mouseleave: function() {
$(this).css("z-index", 0).animate({
height: "15%",
width: "15%",
left: "+=50",
top: "+=50"
}, "fast");
}
}, "img");
另一方面,在动画中使用+=
和百分比在很多情况下会让你感到悲伤。
答案 1 :(得分:1)
从jQuery 1.7开始,不推荐使用.live()方法。使用.on()附加事件处理程序。旧版jQuery的用户应该使用.delegate()而不是.live()。
试试!
你的参数也是错的,第二个参数应该是数据nog某种回调查看更多信息:http://api.jquery.com/live/