2013-02-27 5 views
5

내가 뭘 하려는지 한 번 실행 한 후 특정 함수를 바인딩 해제입니다. 아래 코드에서는 창 스크롤입니다.특정 함수 바인딩 해제 jQuery

$(window).scroll(function(){ 
    if($(window).scrollTop() == viewportheight){ 
      $("#landing_page").fadeOut(function() { $(window).scrollTop(0); $(window).unbind("scroll");}); 
    } 
}); 

기본적으로 #div가 페이드 아웃 될 때 scrollTop (0)을 원합니다. 상단 스크롤 후, 바인딩을 해제하려면이 전체 기능이 필요합니다.

이 함수에 특정 이름을 지정하고 해당 이름을 다시 호출하는 방법이 있습니까? 이 코드가 작동하기 때문에 모든 스크롤 기능이 제거됩니다. 그래서 같은 것을 생각했다 (느릅 나무는 당연히 내가 원하지 않는) :

$(window).scroll(function(FUNCTION NAME HERE){ 
    if($(window).scrollTop() == viewportheight){ 
      $("#landing_page").fadeOut(function() { $(window).scrollTop(0); $(window).unbind("FUNCTION NAME HERE");}); 
    } 
}); 

답변

23

제퍼슨 같은 뭔가를 특정 이벤트 바인딩을 해제 할 jquery.unbind에게 기능을 사용할 수 있습니다 .. .

$(window).bind("scroll.myScroll", function(){ 
    // stuff 
    }) 

지금, 스크롤 바인딩을 해제 - 내가 당신이 다른 윈도우 스크롤 이벤트가 단지의 경우 고유 한 식별자를 가지고, 당신은 건드리고 싶지 않아요.

$(window).unbind('.myScroll'); 
+0

그걸 고쳐 줘! 대단히 감사합니다. – Jefferson

+0

굉장해! 다행히 도울 수있어. –

+0

'jQuery.fn.scrollVal = function (jump, type) {...}'처럼 생성 된 함수의 바인딩을 해제 할 수 있습니까? 이것이 작동하지 않는 것처럼 sth를 되풀이하십시오 :'$ ('ReleaseVersion'). unbind ('. scrollVal');' – krypru

0

당신이 요소

+0

나는 scrollTop의 해제를 시도했지만 작동하지 않습니다. 그것은 계속해서 기능을 발사합니다. – Jefferson