ฉันใช้เวลาพยายามหาฟังก์ชั่นที่ดีในการห่อคำตอบ อย่างไรก็ตามท้ายที่สุดแล้วฉันก็รู้สึกว่านี่เป็นวิธีแก้ปัญหาที่ดีกว่าเมื่อโหลดเนื้อหาหลายรายการในหน้าเดียวหรือทั่วทั้งไซต์
ฟังก์ชั่น:
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");
});
วิธีการนี้ควรใช้กับการเลื่อน divs และอื่น ๆ ฉันหวังว่ามันจะช่วยได้ในคำถามข้างต้นคุณสามารถใช้วิธีนี้ในการโหลดเนื้อหาของคุณในส่วนอาจผนวกและเลี้ยงลูกให้กินข้อมูลภาพทั้งหมดแทนที่จะเป็นฟีดจำนวนมาก
ผมใช้วิธีนี้เพื่อลดค่าใช้จ่ายในhttps://www.taxformcalculator.com มันเสียเทคนิคหากคุณดูที่เว็บไซต์และตรวจสอบองค์ประกอบ ฯลฯ คุณสามารถเห็นผลกระทบต่อการโหลดหน้าเว็บใน Chrome (เป็นตัวอย่าง)
new_element.hide().appendTo('.your_div').fadeIn(); $(window).scrollTop($(window).scrollTop()-1);
บรรทัดแรกต่อท้ายองค์ประกอบอย่างดีส่วนที่สองมั่นใจได้ว่าฟังก์ชั่นของคุณจะไม่หยุดที่ด้านล่างของหน้า