Div一直在弹跳

时间:2014-04-03 20:02:27

标签: jquery css jquery-ui

如果用户向下滚动并且菜单消失,我想要显示div(返回顶部)。 div下滑并弹跳,但它一直弹跳。

,我只想让它反弹一次

我知道发生这种情况是因为只要“(distance + navHeight)< = 1”,代码会一遍又一遍地运行,但有没有办法只运行一次代码?

$(window).on('scroll', function () {
    var scrollTop     = $(window).scrollTop(),
        elementOffset = $('.navigation').offset().top,
        navHeight = $('.navigation').height();
        distance      = Math.round((elementOffset - scrollTop));

    if((distance + navHeight) <= 1) {
        $('#scroll-top').slideToggle(700, 'easeOutBounce', function() {
            $(this).addClass('menu-stick');
        });
    }
});

CSS

.menu-stick {
    position: fixed;
    z-index: 2000;
    left: 0;
    right: 0;
    top: 0;
}

编辑:Here is the live version

2 个答案:

答案 0 :(得分:2)

将动作的触发选择器更改为#scroll-top:not(.menu-stick)

所以:

if (distance + navHeight) <= 1) {
    $('#scroll-top:not(.menu-stick)').slideToggle(700, 'easeOutBounce', function() {
        $(this).addClass('menu-stick');
    });
}

答案 1 :(得分:1)

我显然无法看到您的所有代码,但可能会尝试检查元素是否已被卡住:

if ( !$('#scroll-top').hasClass('menu-stick') ) {
    // Do animation
    // add class 'menu-stick'
}