Unbind a specific function jQuery

Jefferson picture Jefferson · Feb 27, 2013 · Viewed 8.1k times · Source

What I'm trying to do is unbind a specific function, after it has run once. In the code below it's the window scroll.

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

Basicly, when the #div fades out, I want it to scrollTop(0). After scrolling top, I need this entire function to unbind.

Is there a way to give this function a specific name, and then call back that name? Because this code works, only it removes all scroll functions. (Wich ofcourse I don't want) I was thinking something like so:

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

Answer

james emanon picture james emanon · Feb 27, 2013

Jefferson, something like...

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

now, unbind the scroll - I have it a unique identifier just in case you have other window scroll events, you don't want to mess with.

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