jquery .animate()在滚动时反复重复

时间:2012-05-13 12:57:28

标签: jquery scroll jquery-animate

嗨我有一个'返回顶部'按钮,一旦浏览器滚动一定距离就会淡入并动画。问题是每次浏览器被骂一遍又一遍地重复.animate()。任何想法如何一旦发生一次就停止动画?干杯

以下是代码:

  $('.up_arrow').hide();

  // fade in up arrow 
  $(function () {
  $(window).scroll(function () {
    if ($(this).scrollTop() > 100) {
        $('.up_arrow').fadeIn(2000, 'swing')

        .animate ({
           opacity: 1,
           left: '+=30'
        },
        {
           duration: '2000',
           easing: 'swing',
           queue: false
        }           
        );

        } else {
        $('.up_arrow').fadeOut(2000, 'swing');
        }
});
}); 

2 个答案:

答案 0 :(得分:2)

$(function () {
    var stop = false;
    $(window).scroll(function () {
        if ($(this).scrollTop() > 100 && stop == false) {
            $('.up_arrow').fadeIn(2000, 'swing')
                .animate({
                opacity: 1,
                left: '+=30'
            }, {
                duration: '2000',
                easing: 'swing',
                queue: false
            });
            stop = true;
        } else {
            $('.up_arrow').fadeOut(2000, 'swing');
            stop = false;
        }
    });
});

答案 1 :(得分:1)

我怀疑stop()方法应该在这里工作,可能是最好的做法。

e.g。

$('.up_arrow').stop().fadeOut(2000, 'swing');

我只在animate()中使用它,但它应该可以解决问题。