2012-10-05 3 views
2

사용자가 페이지의 특정 부분으로 스크롤 할 때 아약스로드 이벤트를 트리거하는 페이지가 있습니다. 나는 여기에 다음과 같은 아약스 이벤트 핸들러가 있습니다JQuery .on() 및 .off()는 내가 사용하는 방식대로 작동하지 않습니다.

$(document).ajaxStart(function() { 
$('#loader').show(); 
$(window).off('scroll'); 
    }); 

$(document).ajaxComplete(function() { 
    $('#loader').hide(); 
    $(window).on('scroll'); 
    }); 

내가 아약스 호출의 시작 부분에 스크롤 이벤트 핸들러를 해제 여러 번 발사에서 아약스 이벤트를 방지하기 위해 (I도를 대기 지연 기능을 썼다 발사하기 몇 밀리 초). 내 의도는 아약스가 끝난 후에 두루마리를 리바 인딩하는 것이다. 내 #loader div가로드 된 상태에서 언로드 된 상태이므로 이러한 이벤트가 발생하고 있음을 알고 있습니다. 불행히도 스크롤은 결코 다시 바인딩되지 않으며, 그만 두어 버리고 이유를 이해할 수 없습니다. 따라서 새로운 Ajax 페이지를로드하고 작업을 중단합니다.

+0

'$ (window) .on ('scroll '); 실제 처리기가 없습니다. –

+2

설계대로 작동합니다. 올바르게 사용하고 있지 않습니다. – Shmiddty

답변

6

이름 "on"과 "off"는 혼동을 줄 수 있습니다. 이를 사용하여 이벤트를 켜고 끌 수 없습니다.

off 메서드는 요소에서 이벤트 핸들러를 완전히 제거합니다. 이벤트를 다시 바인딩 할 때 다음과 같이 이벤트 핸들러를 지정해야합니다.

$(window).on('scroll', handlerFunction); 
+0

나는 본다. $ (window) .off ('scroll')로 스크롤을 해제 할 수 있지만 같은 방식으로 다시 스크롤 할 수는 없기 때문에 혼란 스러웠습니다. –

+0

Guffa 다시 한번 감사드립니다! 방금 작동 했어. 너 다행이야. –

관련 문제