解除特定函数的jQuery绑定

7

我想要做的是在一个特定的函数运行一次之后解除它的绑定。在下面的代码中,这个函数是窗口滚动。

 $(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");});
     }
 });
2个回答

26

杰弗逊,类似于......

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

现在,解除滚动绑定 - 我已经为其设置了唯一标识符,以防您有其他窗口滚动事件,您不希望出现混乱。
$(window).unbind('.myScroll');

有没有可能解除像这样创建的函数:jQuery.fn.scrollVal = function (jump, type) {...}?因为类似这样的东西不起作用:$('#ReleaseVersion').unbind('.scrollVal'); - krypru

0

您可以使用 jquery.unbind 函数来解除元素上的任何特定事件绑定。


我已经尝试过取消绑定scrollTop,但是它不起作用。它仍然会触发该函数。 - Jefferson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接