jQuery Infinite Scroll - событие запускается несколько раз при быстрой прокрутке

Хорошо, приведенный ниже код «работает» в том смысле, что при прокрутке вниз страницы запускается функция AJAX, а результаты добавляются в div #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();
                }
            }
        });
    }
});
21
задан Marc 3 August 2011 в 20:31
поделиться