Я витратив деякий час, намагаючись знайти приємну функцію, щоб завершити рішення. У будь-якому випадку, я вважаю, що це кращі рішення під час завантаження декількох контентів на одній сторінці або на одному веб-сайті.
Функція:
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");
});
Цей підхід також повинен працювати для прокрутки дівок тощо. Я сподіваюся, що це допоможе, у вищезазначеному питанні ви могли б використовувати цей підхід для завантаження вмісту в розділи, можливо, додавати і тим самим переносити подачу всіх цих зображень, а не об'ємного каналу.
Я використовував такий підхід, щоб зменшити накладні витрати на https://www.taxformcalculator.com . Це призвело до хитрості, якщо ви подивитеся на сайт і огляньте елемент тощо, ви можете побачити вплив на завантаження сторінки в Chrome (як приклад).
new_element.hide().appendTo('.your_div').fadeIn(); $(window).scrollTop($(window).scrollTop()-1);
Перший рядок приємно додає елементи, другий запевняє, що ваша функція ніколи не зупиняється внизу сторінки.