2013-02-27 52 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