如何检测滚动结束

15

我在使用脚本时遇到了一些问题。所以,我想检测滚动操作的结束。当我滚动页面时,我可以弹出提示,但是当我停止滚动时却不能。你能帮我吗?这是我的代码:

var animatable = $('body, html');
var animating = false;
animatable.animate( {scrollTop: $('#foo').offset()})

$(window).scroll(function(e) { 
       if(!animating){
           animatable.stop(false, true); 
           alert('stop scrolling');
       }
       animating = false;
});​

并且有些小把戏:http://jsfiddle.net/yhnKR/


可能是重复的问题:如何检查用户是否滚动到底部 - Rafay
3
不,伙计,我不想在我的网站底部警示,我想要在滚动到页面底部时警示,这是很大的不同。谢谢。 - Lukas
可能是重复的问题:jQuery:当用户停止滚动时触发事件 - Stephan Muller
2个回答

17

这是您想要实现的吗:

$('body').animate( {scrollTop: $('#foo').offset().top},1000,function(){
 alert('stop scrolling');   
});

http://jsfiddle.net/yhnKR/2/

使用jQuery动画滚动页面时,无需监听滚动事件。


如果你想要检测用户何时停止滚动,则需要使用timeout来检查用户是否停止。否则,你会在每个滚动步骤中都得到事件。 像这样:

var delay = 1000;
var timeout = null;
$(window).bind('scroll',function(){
    clearTimeout(timeout);
    timeout = setTimeout(function(){
        alert('scrolling stopped');
    },delay);
});​​​​​​​​​​

http://jsfiddle.net/yhnKR/4/


不,我需要检测我的滚动操作是否停止,我在页面上,已经开始滚动,在滚动一定距离后停止了,因此我需要检测结束时刻。 - Lukas
@ŁukaszBorawski,从你的问题和代码示例中并不清楚你想要做什么。但是我已经更新了我的答案。 - Andy

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接