Ошибка ожидания, пока не завершится выполнение функции, прежде чем она попытается выполнить снова - PullRequest
1 голос
/ 05 мая 2009

Я использую $ (window) .scroll (); указать функцию для вызова, когда пользователь прокручивает слишком близко к верху или низу.

Функция выполняется за секунду, и если они продолжают прокручиваться, она выполняется несколько раз, прежде чем первый из них даже завершится.

Можно ли как-нибудь разрешить запуску функции и затем сообщить функции $ (window) .scroll (), что ей нужно подождать, прежде чем снова выполнить эту функцию?

Ответы [ 2 ]

3 голосов
/ 05 мая 2009

Вы можете установить логическое значение, которое вы уже проверяете положение прокрутки:

checkingPosition = false;
$window.scroll(function() {
   if(checkingPosition) return;
   checkingPosition = true;
   //do stuff
   checkingPosition = false;
});
1 голос
/ 05 мая 2009

Я бы сделал что-то подобное, чтобы избежать проблем / путаницы в области видимости путем инкапсуляции данных в объект ... в данном случае объект jQuery (в элементе окна):

$(function() {
    $(window).data('checking_scroll',false);
    $(window).scroll(function() {
        if($(this).scrollTop() >= 200 /* or whatever... */) {
            if($(this).data('checking_scroll') === true) {
                return false;
            } else {
                whatever_function();                   
            }     
        }
    });
});

function whatever_function() {
    $(window).data('checking_scroll',true);
    // do all your stuff...
    $(window).data('checking_scroll',false);
}

... но это только я.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...