2

スクロールして表示したときに特定のDIVをフェードさせる機能があります。これらのDIV内には、各フェードアニメーションの最後にアニメーション化する子要素がいくつかあります。以下の関数の中に関数を追加するにはどうすればよいですか?

$(window).scroll(function(d,h) {
tiles.each(function(i) {
    a = $(this).offset().top + $(this).height();
    b = $(window).scrollTop() + $(window).height();
    if (a < b) $(this).fadeTo(500,1) ???AND SLIDE CHILD ELEMENT ALSO!!???;
    ///how to I target each child element to do something in the above line???
    });
});

これが私のコンセプトを視覚化するのに役立つjsFiddleデモです。アニメーションはすでに機能しています。問題は、スライドする子要素が最初に開始することです。私がやりたいのは、各onScrollフェードが開始するときに各スライド機能を連続して開始することです。よろしくお願いします。これは、jQueryを使用したトレイルと苦難で私を助けてくれます!!

4

1 に答える 1

2

フェードが終了した後に何かを実行したい場合は、アニメーションが終了したときにトリガーされるコールバック関数を作成します。

var that = $(this);
if (a < b) $(this).fadeTo(500,1, function() {
    alert ("Do something afterwards");
    that.children().someAction();
});

私は、これがあなたが望むものであることを願っています。

例を機能させるには、次を使用できます。

$(window).scroll(function(d,h) {
    tiles.each(function(i) {
        a = $(this).offset().top + $(this).height();
        b = $(window).scrollTop() + $(window).height();
        var that = $(this);
        if (a < b && true != $(this).data('faded')) {
            $(this).data('faded', true).fadeTo(500,1, function() {
                that.find('div').animate({left: '+=300', top: '+=12'}, 4500);
            });
        }
    });
});

これがデモです:http://jsfiddle.net/mSRsA/

于 2012-11-12T15:37:21.867 に答える