私は、ソリューションをラップするための素晴らしい関数を見つけることに少し時間を費やしました。とにかく、これは、単一のページまたはサイト全体に複数のコンテンツをロードするときに、より良い解決策であると私が思うこれで終わりました。
関数:
function ifViewLoadContent(elem, LoadContent)
{
var top_of_element = $(elem).offset().top;
var bottom_of_element = $(elem).offset().top + $(elem).outerHeight();
var bottom_of_screen = $(window).scrollTop() + window.innerHeight;
var top_of_screen = $(window).scrollTop();
if((bottom_of_screen > top_of_element) && (top_of_screen < bottom_of_element)){
if(!$(elem).hasClass("ImLoaded")) {
$(elem).load(LoadContent).addClass("ImLoaded");
}
}
else {
return false;
}
}
次に、スクロール時にウィンドウを使用して関数を呼び出すことができます(たとえば、私が行うように、クリックなどにバインドすることもできるため、関数も使用できます)。
使用するには:
$(window).scroll(function (event) {
ifViewLoadContent("#AjaxDivOne", "someFile/somecontent.html");
ifViewLoadContent("#AjaxDivTwo", "someFile/somemorecontent.html");
});
このアプローチはdivのスクロールなどでも機能するはずです。上記の質問で、このアプローチを使用してコンテンツをセクションにロードし、バルクフィードではなくすべての画像データを追加してドリブルフィードすることができます。
このアプローチを使用して、https://www.taxformcalculator.comのオーバーヘッドを削減しました。サイトを見たり要素を調べたりすると、Chromeでのページ読み込みへの影響を確認できます(例として)。
new_element.hide().appendTo('.your_div').fadeIn(); $(window).scrollTop($(window).scrollTop()-1);
最初の行は要素を適切に追加し、2番目は関数がページの下部で停止しないことを保証します。