2014-04-01 217 views
1

我遇到了jquery动画的问题。我的代码如下:停止jquery动画

if((valorscrollpx >= 800) && (valorscrollpx <= 1700)) 
    { 
     $('#loquehacebien').fadeIn(600); 
     $('#loquehacebien_estrella').animate({left: '-=500', top: '+=80'}, 1800); 
    } 
    else 
    { 
    $('#loquehacebien').fadeOut(600); 
    } 

问题是我不知道如何停止这个动画! 当滚动达到800 px动画的开始和结束时,但每次移动滚动动画时都会从该点重新开始。 我能做什么?我只需要动画开始,一个人结束一次。

谢谢!

回答

0

如果需要动画明星只是一个时间,你可以使用一个标志,这样的:

var flag = false; 

$(window).scroll(...);

if((valorscrollpx >= 800) && (valorscrollpx <= 1700) && !flag) { 
     $('#loquehacebien').fadeIn(600);  
     $('#loquehacebien_estrella').animate({left: '-=500', top: '+=80'}, 1800); 
     flag = true; 
} else {  
     $('#loquehacebien').fadeOut(600); 
} 
替换代码
+0

非常感谢您的回答! 我还是不明白该怎么做。请参阅此链接:http://www.adminvps.com.ar/trabajos/test/ 如果您提前滚动明星移动并不停止。我需要这个停止。我如何做到这一点? – wanheda

+0

如果您只需要一次为该明星制作动画,则可以使用如下标志: 'var flag = false; 如果((valorscrollpx> = 800)&&(valorscrollpx <= 1700)&&标志!) { $( '#loquehacebien')淡入(600)。 ('left:' - = 500',top:'+ = 80'},1800); flag = true; } 其他 { $( '#loquehacebien')淡出(600)。 }' 如果它是你正在寻找,我会通过这条评论 –

+0

代替我的回答只是把'VAR标志= FALSE;''外$(窗口).scroll(...);' –