문제

$ (창) .scroll ()을 사용하고 있습니다. 사용자가 상단 또는 하단에 너무 가까이 스크롤 할 때 호출 할 함수를 지정합니다.

함수는 실행하는 데 1 초가 걸리고 스크롤을 계속하면 첫 번째가 완료되기 전에 여러 번 실행됩니다.

함수가 실행을 시작한 다음 $ (창) .scroll () 함수를 다시 실행하기 전에 대기해야한다고 말할 수있는 방법이 있습니까?

도움이 되었습니까?

해결책

스크롤 위치를 이미 확인하고있는 부울을 설정할 수 있습니다.

checkingPosition = false;
$window.scroll(function() {
   if(checkingPosition) return;
   checkingPosition = true;
   //do stuff
   checkingPosition = false;
});

다른 팁

데이터를 객체에 캡슐화하여 범위 문제/혼동을 피하기 위해 이와 같은 일을 할 것입니다 ...이 경우 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);
}

...하지만 그게 나야.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top