jquery animate scrolltop回调

时间:2011-06-01 19:43:46

标签: jquery callback jquery-animate scrolltop

我有以下jquery将页面滚动到顶部,然后执行回调函数。

问题在于,即使页面已经位于顶部,它仍然会在执行回调之前等待'1000',这是我不想要的。

$('html').animate({scrollTop:0}, 1000, 'swing', function(){

//do something

});

3 个答案:

答案 0 :(得分:3)

它不会等待

它会将您的文档从顶部移动到顶部......有趣但是它是如何实现的。你有其他选择。之一:

  • 在滚动之前检查您的页面位置(通过提供一些代码建议的其他人)或
  • 使用一些工作方式不同的jQuery插件

我的.scrollintoview() jQuery plugin就是这样的。它只在必须滚动并在滚动完成后运行完整的处理程序(如果首先滚动)或者如果不需要滚动则立即滚动。

但它需要一些需要滚动的元素。您实际上并未将任何元素滚动到视图中,而只是滚动HTML。这当然不是最安全的方式。使用它们会更好:

$("html,body")

$(window)

支持更多跨浏览器。因此,$("html")可能无效。

答案 1 :(得分:1)

var html=$('html');
if(html.scrollTop()>0){
  html.animate({scrollTop:0}, 1000, 'swing', function(){
  //do something
});
}else{
  //do something
}

答案 2 :(得分:1)

if( $(window).scrollTop() > 0 ) {
    $('html').animate({scrollTop:0}, 1000, 'swing', function(){

        //callback after animate

    });
} else {
    // callback right now (no wait)
}