6

我在将 jquery animate scrollTop 设置为已定义的 div 时遇到问题。

我使用此代码为滚动设置动画:

$('body').animate({scrollTop: $('#sections_display').offset().top-100}, 500, function(){
    $('#ajax_load').load('file.php');
});

但这在 Firefox 或 IE 中不起作用。

当我使用它$('html').animate而不是$('body').animate它时,它在 Chrome 中不起作用。

我也尝试使用两者:$('html,body').animate但问题是回调函数$('#ajax_load').load('file.php');被执行了两次,这调用了文件 2 次。

我通过使用php临时解决了这个问题,但是这个解决方案迫使我在每个页面中重复代码 2 次,以制作 2 个支持$('body').animate$('html').animate.

我在这里搜索并发现了这个:jquery animate scrolltop callback但是没有用。

我也试过:

$(window).animate

$(document).animate

$('#container-div').animate

但是没有办法做到这一点。

我可以找到一种跨浏览器方法来实现这一点吗?

4

2 回答 2

1

哈克解决方案可能会奏效......

$('html,body').animate({scrollTop: $('#sections_display').offset().top-100}, 500);

setTimeout(function(){
    $('#ajax_load').load('file.php');
}, 500);
于 2012-05-11T14:57:05.237 回答
1

正如这篇文章中提到的

它不适用于所有主要浏览器。当应用于“html”时,并非所有这些都支持滚动,有些需要“body”。这取决于您是否处于怪癖模式。动画 iframe 时问题更大

主题启动器最终将动画应用于html,body而不是彼此。

于 2012-05-11T14:58:02.367 回答