もう少し掘り下げてから、私はquestion/answerのバリエーションを使用しました。
私の最終的な結果は次のようになります。
function ($container, previousCount, callback) {
var _imgs = $container.find('img'),
_newImages = _imgs.slice(previousCount), // 'start index' for new images
imgCount = _newImages.length, // count how many new ones exist
counter = 0;
_imgs.on('load', function() { // Count loaded
runCallback(20, callback);
}).on('error', function() { // Count errors, anyway, to reach total
runCallback(20, callback);
});
function runCallback(counterLimit, callback) {
// if counter meets new count or hits counter limit, run callback
counter++;
if (counter == imgCount || counter == counterLimit) {
callback();
}
}
}
私はこのようにそれを必要とする理由にはいくつかの癖が。 previousCount
は実際には現在DOM内にある画像の総数よりも大きくなる可能性があります。これは、人々が無限スクロールの異なる部分にジャンプできるためです。このため、counter == counterLimit
のチェックもあります。
また、成功したか失敗したかにかかわらず、新しいイメージセットが読み込まれたときにスクリプトを実行する必要があります。このため、私は.on('load'
と.on('error'
の両方を使用してカウントを実行しています。私はときどきイメージがエラーになることがあることに気付きました(これはこの特定のケースでは問題ありません)。それはカウントを捨て、決してコールバックを起動しません。
==================
EDIT 04/27/16:私は以来、あなたのためにこれを扱うことができるプラグインを発見したと思わました(以前のロードがロードされる前のいくつかの後続のロードを除いて) imagesLoadedをチェックしてください。
無限大の場合は、最後まで待つことができますか? lol –
@AdamBuchananSmith - 次の要素のセットが完了したら、私は話しています。無限のスクロールでは、ユーザーが次のインクリメント(通常はページの一番下にあるスクロール)を読み込むまで、すべての可能なデータを一度に読み込みません。私は直近のインクリメントがレンダリングを終了したときに検出したい。 – Andrew
私は決して質問を読んでいない、私は見出しだけを読む –