Saya menghabiskan beberapa waktu mencoba menemukan fungsi yang bagus untuk membungkus solusi. Bagaimanapun, berakhir dengan ini yang saya rasa merupakan solusi yang lebih baik ketika memuat beberapa konten pada satu halaman atau di seluruh situs.
Fungsi:
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;
}
}
Anda kemudian dapat memanggil fungsi menggunakan jendela pada gulir (misalnya, Anda juga dapat mengikatnya ke klik dll. Seperti yang saya juga lakukan, maka fungsinya):
Menggunakan:
$(window).scroll(function (event) {
ifViewLoadContent("#AjaxDivOne", "someFile/somecontent.html");
ifViewLoadContent("#AjaxDivTwo", "someFile/somemorecontent.html");
});
Pendekatan ini juga harus berfungsi untuk menggulir divs dll. Saya harap ini membantu, dalam pertanyaan di atas Anda dapat menggunakan pendekatan ini untuk memuat konten Anda dalam beberapa bagian, mungkin menambahkan dan dengan demikian menggiring bola memberi makan semua data gambar daripada umpan massal.
Saya menggunakan pendekatan ini untuk mengurangi overhead pada https://www.taxformcalculator.com . Ini adalah trik, jika Anda melihat situs dan memeriksa elemen dll. Anda dapat melihat dampak pada pemuatan halaman di Chrome (sebagai contoh).
new_element.hide().appendTo('.your_div').fadeIn(); $(window).scrollTop($(window).scrollTop()-1);
Baris pertama menambahkan elemen dengan cara yang baik, yang kedua memastikan bahwa fungsi Anda tidak pernah berhenti di bagian bawah halaman.