Я потратил некоторое время, пытаясь найти хорошую функцию, чтобы обернуть решение. Во всяком случае, в конечном итоге это, как мне кажется, является лучшим решением при загрузке нескольких материалов на одной странице или на сайте.
Функция:
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);
первая строка добавляет элементы хорошим способом, вторая гарантирует, что ваша функция никогда не останавливается в нижней части страницы.