Итак, я пытаюсь реализовать ленивую прокрутку с помощью jQuery, выбирая элементы по мере необходимости с сервера. Так вот как я это делаю.Lazy scrolling jquery
- Определите конец страницы, сделайте вызов сервера, чтобы получить еще N элементов.
- Затем очистите элементы div и установите scrollTop в верхнюю часть div.
- Когда пользователь хочет вернуться назад, предыдущие списки снова совершают вызов сервера для извлечения элементов.
Вот краткий код.
if ((scrollHeight - scrollPosition)/scrollHeight === 0)
{
//end of the page,scrolling down retrieve N more listings
doRequest("down");
}
if(jQuery(window).scrollTop() == 0)
{
//top of the page,scrolling up
doRequest("up");
}
});
function doRequest(scroll_dir)
{
if(scroll_dir == "down")
{
if(jQuery("#detail").length)
listing_id = jQuery("#detail input").last().val();
}
else if(scroll_dir == "up")
{
if(jQuery("#detail").length)
listing_id = jQuery("#detail input").first().val();
}
jQuery.ajax({
type: "GET",
url: url,
data: {params:params,start:listing_id,scroll_direction:scroll_dir},
success: function(results)
{
if(results.length > 0)
{
jQuery('#detail').html("");
}
//load the results
//append to div,jQuery('#detail').append(data);
//code skipped for brevity
scrollTop = jQuery("#detail").offset().top;
jQuery(window).scrollTop(scrollTop);
} ,
});
}
Поэтому у меня есть внутренний контроллер, который принимает идентификатор листинга с направлением прокрутки и возвращает результат.
Таким образом, нисходящая прокрутка происходит нормально, но когда я прокручиваю вверх, необходимо обнаружить эту точку, чтобы сделать вызов сервера, чтобы отложить N-1 до N-10. Но мне трудно, что точка, где я нужно позвонить, так как jQuery(window).scrollTop() == 0
не работает хорошо для мобильных телефонов?
Любые библиотеки, которые уже делают это? Любая помощь была бы полезной. Спасибо.
Существует большая ошибка в вашей ленивой логике загрузки. начиная с шага 2, его плохая идея, чтобы очистить существующие элементы в текущем представлении и загрузить новые элементы, так как вам может понадобиться снова загрузить их при прокрутке вверх, как в вашем случае.** Лучшее решение: ** вы просто добавляете новые элементы к существующему списку элементов, так что вы не загружаете одни и те же элементы при прокрутке, а также улучшаете производительность своих сайтов, поскольку вы загружаете элементы только один раз независимо друг от друга от того, сколько страниц прокручивается вверх и вниз. – dreamweiver
@dreamweiver Спасибо, что предложение сейчас работает отлично. – Varun
теперь мы закрываем этот вопрос? – dreamweiver