ブロックを表示するページがあります。それらは4列4列、合計16ブロックです。
しかし、ページの一番下に達すると、ページの下部に達するたびに16個のブロックを追加するAJAX関数があります。.each()AJAX関数の問題
私はこのコードで徐々にこれらの要素にクラスを追加し、これを行うために、(私は0から1への不透明度を変更する)これらのブロックのための負荷のアニメーションをしたい:
列1の場合:
(.colnum1
.colnum2
は列2のブロックに相当):カラム2について
$('.colnum1').each(function(u){
setTimeout(function(){
$('.colnum1').eq(u).addClass('selected');
}, 1200 * u);
});
)をカラム1におけるブロックに対応します
これはすべて最初の16個の要素に最適です。
しかし、次の16要素をロードすると、アニメーションが表示される前に(アニメーションonload
が発生する前に)遅延します。
この遅延が何に対応しているのかわかりました...
jQueryの.each()
関数が再び実行されると、新しい要素の前に既に存在する要素がスローされます...しかし、望まれていません。
私は、すでに読み込まれた要素を先に投げていないように関数を書き直そうとしました。このコードでは
:(.selected
はonload
アニメーションを追加クラスである)
$('.colnum1:not(.selected)').each(function(u){
setTimeout(function(){
$('.colnum1:not(.selected)').eq(u).addClass('selected');
}, 1200 * u);
});
しかし、いくつかの理由で、それはいくつかなどをスキップし...すべての要素にクラス.selected
を追加されていません
私が知りたいこと新しい16要素を取得したときに、.each
関数は、以前の既存の要素のすべてを最初にスローしないようにするにはどうすればよいですか?
なぜあなたはsetTimeoutメソッドを使用しています?なぜあなたはそれぞれを使っていますか? –
@ KevinBすべての16要素が同時に表示されるわけではないので、それらは見栄えの良いフローです。 – Jackymamouth
あなたはすべてのコンテンツをロードしています。ユーザーはスクロールしますが、アニメーションを表示してそれらを表示するように強制しますか?それは、いけてないねえ。 –