2013-02-27 48 views
5

我試圖做的是在運行一次後解除特定函數的綁定。在下面的代碼中是窗口滾動。取消綁定特定函數jQuery

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

基本上,當#div淡出時,我希望它能夠scrollTop(0)。滾動頂部之後,我需要整個函數來解除綁定。

有沒有辦法給這個函數一個特定的名字,然後回叫那個名字?由於此代碼有效,因此只能刪除所有滾動功能。 (至極ofcourse我不希望)我在想什麼,像這樣:

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

回答

23

傑斐遜,像.. 。

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

現在,解除綁定卷軸 - 我有一個唯一的標識符,以防萬一你有其他的窗口滾動的事件,你不想惹。

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

修好了!先生非常感謝您。 – Jefferson 2013-02-27 08:11:41

+0

太棒了!很高興我能幫上忙。 – 2013-02-27 08:11:57

+0

是否有可能解除一個像這樣創建的函數:'jQuery.fn.scrollVal = function(jump,type){...}'?因爲這樣做不起作用:'$('#ReleaseVersion')。unbind('。scrollVal');' – krypru 2016-11-14 11:59:46

0

可以使用jquery.unbind功能取消綁定任何特定事件的元素

+0

我試過解開scrollTop,這是行不通的。它持續觸發該功能。 – Jefferson 2013-02-27 08:07:19