动画步骤函数中的jQuery对象在每个函数调用中返回“undefined”

时间:2013-04-07 17:44:07

标签: javascript jquery animation

我正在尝试使用以下代码稍微修改jQuery动画:

web_links.mouseenter(function() {
    var site = $(this).closest('.site');
    var image = site.find('.image').first();
    var offset = '-' + image.height();
    var caption = site.closest('.caption').first();                    
    site.find('.image').first().stop().animate({top: offset}, {
        duration: 400,
        step: function(curTop) {
            console.log(caption);
            console.log(caption.css("top");
            if (curTop < -191) {
                caption.css({top: curTop + "px"});
            }
        }
    });
});

奇怪的是,caption似乎是一个实现css()的有效jQuery对象,但是当我尝试在其上调用css()方法时,它返回undefined。当我尝试offset()时会发生同样的情况。

有没有人知道为什么会这样?我一夜之间一直在绞尽脑汁,但这似乎没有任何意义。

1 个答案:

答案 0 :(得分:3)

我猜这行不匹配任何元素:

var caption = site.closest('.caption').first();

测试.length以确定无疑。如果是0,那就是问题。

console.log(caption.length);

FWIW,.first()之后您不需要.closest(),因为.closest()会返回1元素的最大值...因此"est"部分功能名称。 ; - )