jQueryのNoob。
画像をフェードインおよびフェードアウトさせることを目的として、画像ギャラリーを循環しようとしています。
これが私のJSFiddleです。各画像fadeTo(arg1)を
クリックしてからfadeTo(args2)をクリックします。
しかし、私は彼らに一つずつ行ってもらいたい。
おそらく、チェーンに追加する必要がありますか?#gallerydelay
どんな助けでも大歓迎です。
jQueryのNoob。
画像をフェードインおよびフェードアウトさせることを目的として、画像ギャラリーを循環しようとしています。
これが私のJSFiddleです。各画像fadeTo(arg1)を
クリックしてからfadeTo(args2)をクリックします。
しかし、私は彼らに一つずつ行ってもらいたい。
おそらく、チェーンに追加する必要がありますか?#gallerydelay
どんな助けでも大歓迎です。
jQueryアニメーション(javascriptのほとんどのものと同様)は非同期です。つまり、アクションが終了する前に関数呼び出しが返されます。$('img').eachある意味で、ループの各反復は次のように考えることができます。
thisバインドされた関数を呼び出しますimgfadeは$(this)次に、すべての反復が終了した後、ブラウザはアニメーションを画面上で同時に発生させ始めます(すべてがスケジュールされているため)。
fadeシーケンシャル動作を作成するには、関数にコールバックを与えることができます。
$('#gallery').click(function(evt) {
var remainingImages = $("img").toArray();
var processNext = function() {
var image = remainingImages.shift();
if(!image) return;
// Add the next iteration as a callback to the animation
$(image).fadeTo(500, .3).fadeTo(250, 1, processNext);
};
processNext();
});
次に、すべてのアニメーションを一度にスケジュールする代わりに、次のようになります。
img要素がremainingImages配列に格納されますprocessNext関数が呼び出され、配列から最初の画像が削除されますfade、アニメーションの終了後$(image)に呼び出す必要のある関数(たまたまそれ自体)を提供します