Nick Bewley
Nick Bewley

Reputation: 9289

Jquery trigger animation once on scroll

Trying to trigger an animation once on scroll, but it triggers multiple times.

$(window).scroll(function(){
  var y = $(window).scrollTop();
  var flagscroll=true;
  if( y < 30 && y > 20 && flagscroll==true ) {
        flagscroll=false;
       $('[data-label="SearchPanel"]').animate({ 
            top: "-=34px",
        }, 200 );
  }
});

What am I missing here? Thanks for your ideas!

Upvotes: 0

Views: 919

Answers (2)

Arunkumar Vasudevan
Arunkumar Vasudevan

Reputation: 5330

set var flagscroll=true; before $(window).scroll

like

var flagscroll=true;
$(window).scroll(function(){
var y = $(window).scrollTop();
if( y < 30 && y > 20 && flagscroll==true ) {
    flagscroll=false;
   $('[data-label="SearchPanel"]').animate({ 
        top: "-=34px",
    }, 200 );
}
 });

Upvotes: 0

StaticVoid
StaticVoid

Reputation: 1537

Your flag is always set back to true for every scroll event. You must place the initialization outside of the event function declaration:

var flagscroll=true;

$(window).scroll(function(){
    var y = $(window).scrollTop();
    if( y < 30 && y > 20 && flagscroll==true ) {
        flagscroll=false;
        $('[data-label="SearchPanel"]').animate({ 
            top: "-=34px",
        }, 200 );
    }
});

Upvotes: 3

Related Questions