Jquery回调函数问题

时间:2012-08-02 16:57:22

标签: jquery

我正在尝试使用回调函数创建悬停效果。似乎效果只能在回调函数上触发,而不是在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>  

2 个答案:

答案 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/