3

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

问题是即使页面已经在顶部,它仍然会等待“1000”过去后再执行回调,我不希望它这样做。

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

//do something

});
4

3 回答 3

4

它不等待

它使您的文档从上到下动画...有趣但就是这样。你还有其他选择。任何一个:

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

我的.scrollintoview()jQuery 插件就是这样工作的。它仅在必须滚动时滚动,并在滚动完成后(如果首先滚动)或在不需要滚动时立即运行完整的处理程序。

但它需要一些需要滚动的元素。您实际上并没有将任何元素滚动到视图中,而只是将 HTML 滚动到视图中。这当然不是最安全的方法。最好使用以下任何一种:

$("html,body")

或者

$(window)

它更支持跨浏览器。所以你$("html")可能无法在所有这些中工作。

于 2011-06-01T19:48:26.527 回答
2
if( $(window).scrollTop() > 0 ) {
    $('html').animate({scrollTop:0}, 1000, 'swing', function(){

        //callback after animate

    });
} else {
    // callback right now (no wait)
}
于 2011-06-01T19:51:01.060 回答
1
var html=$('html');
if(html.scrollTop()>0){
  html.animate({scrollTop:0}, 1000, 'swing', function(){
  //do something
});
}else{
  //do something
}
于 2011-06-01T19:50:24.947 回答