1

次のコードを使用して、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"});
            }
        }
    });
});

奇妙なことに、キャプションは を実装する有効な jQuery オブジェクトのようですcss()が、そのメソッドを呼び出そうとするとcss()、 が返されますundefined。を試しても同じことが起こりoffset()ます。

なぜこれが起こっているのか、誰にも分かりますか?私はこれについて一晩中頭を悩ませてきましたが、意味がないようです.

4

1 に答える 1

3

この行はどの要素とも一致していないと思います:

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

をテストし.lengthて、確実に確認してください。である場合0、それが問題です。

console.log(caption.length);

.first()FWIW、 after.closest()は必要ありません。最大の要素.closest()を返すため、関数名の一部です。;-)1"est"

于 2013-04-07T17:51:15.027 に答える