MikaTuupolaのLazyLoadプラグインhttp://www.appelsiini.net/projects/lazyloadを使用して、長い画像ギャラリーを下にスクロールするときに画像の読み込みを遅らせています。問題は、10枚の画像の後で、無限スクロールを使用するため、次の10枚の画像をフェッチし、ajaxを介してそれらを追加することです。遅延読み込みは、追加された画像のこの次のバッチでは機能しなくなりました。
これはかなりJavaScriptが多い画像ギャラリーなので、他のすべて(ツールチップ、モーダルオーバーレイなど)については、jQueryのdelegate()を使用してajaxが挿入された要素にバインドしています。Lazy Loadプラグインの問題は、バインドするイベントがわからないことです。
つまり、「lazy」のクラスで画像を遅延ロードしたいとします。私はこれを書きます:
$("img.lazy").lazyload({
effect: "fadeIn"
});
最初の10枚の画像では機能しますが、ajaxを介してさらに挿入すると機能しなくなります。私が考えることができる唯一のことは、次のように、ロードイベントでデリゲートを使用することです。
$(document).delegate("img.lazy", "load", function(event) {
$(this).lazyload({
effect: "fadeIn"
});
});
しかし、それはすべてを壊します。ありがとう!
編集: より多くのレコードをロードするために使用するjQuery(これはRailsアプリです):
$(window).scroll(function() {
var url;
url = $(".pagination .next_page").attr("href");
if (url && $(window).scrollTop() > $(document).height() - $(window).height() - 50) {
$(".pagination").html("<p>loading more images...</p>");
return $.getScript(url);
}
});
$(window).scroll();