Хорошо, приведенный ниже код «работает» в том смысле, что при прокрутке до нижней части страницы запускается функция AJAX, и результаты добавляются к элементу #postswrapper на странице.
Проблема в том, что если я прокручиваю очень быстро, когда достигаю нижней части страницы, AJAX запускается несколько раз и загружает несколько наборов результатов в div #postswrapper (количество дополнительных, «нежелательных» результатов определяется тем, многие дополнительные события прокрутки были вызваны быстрой прокруткой).
В конечном счете, мне нужно только обслуживать один набор результатов, когда пользователь достигает дна. Я пытался добавить таймеры и тому подобное, но безрезультатно. Очевидно, он хранит дополнительные действия прокрутки в DOM и запускает их в последовательном порядке.
Есть идеи?
Я использую jquery.1.4.4.js, если это кому-нибудь поможет. И e.preventDefault () не работает, в любом случае, в этой ситуации.
$(window).scroll(function(e) {
e.preventDefault();
if ($(window).scrollTop() >= ($(document).height() - $(window).height())) {
$('div#loadmoreajaxloader').show();
$.ajax({
cache: false,
url: 'loadmore.php?lastid=' + $('.postitem:last').attr('id'),
success: function(html) {
if (html) {
$('#postswrapper').append(html);
$('div#loadmoreajaxloader').hide();
} else {
$('div#loadmoreajaxloader').html();
}
}
});
}
});