0

可能重复:
ScrollTop 在 Chrome 中真的很生涩

我正在使用以下代码来获取返回顶部按钮和导航以在用户滚动后淡入。问题是每次滚动时都会触发它,因此导致滚动非常生涩。有没有另一种方法可以做到这一点,它可能只会触发一次功能?

    $(function () {
    $(window).scroll(function () {
        if ($(this).scrollTop() > 600) {
            $('#backToTop, #navigation').fadeIn();
        } else {
            $('#backToTop, #navigation').fadeOut();
        }
    });
    }); 

   });
4

2 回答 2

1

也许设置一个超时...

function scrollit(){  
    if ($(this).scrollTop() > 600) {
    $('#backToTop').fadeIn();
    } else {
    $('#backToTop').fadeOut();
    }
     }

var timer;

$(window).scroll(function () {

window.clearTimeout(timer);
timer = window.setTimeout(function(){ scrollit(); }, 2000);

    }); 
于 2012-11-05T00:09:19.580 回答
0

您可以实现Ben Alman 的 jQuery 油门或去抖动插件。基本上,这将您的功能限制为仅运行一定次数。两者的区别在官网上有解释:

好吧,简单地说:虽然节流将函数的执行限制为每延迟毫秒不超过一次,但去抖动保证函数只会执行一次(给定指定的阈值)。

于 2012-11-04T23:54:18.163 回答