2012-05-11 124 views
6

我正面臨jquery animate scrollTop到一個已定義div的問題。跨瀏覽器jquery動畫scrollTop

我使用此代碼動畫滾動:

$('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

但是沒有辦法做到這一點。

我可以找到一個跨瀏覽器的方法來實現這個嗎?

回答

1

哈克的解決辦法可能做的伎倆......

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

setTimeout(function(){ 
    $('#ajax_load').load('file.php'); 
}, 500); 
+0

延遲(500)沒有任何影響,我不知道爲什麼? 我測試了延遲(10000),但結果相同「不延遲」 – semsem

+0

Himm ... yes看起來像load()方法不會排隊,但我已經添加了另一個解決方案,我的答案應該做的竅門 – trapper

+0

它的工作,謝謝 – semsem

1

正如this post

提到它不會在所有主要的瀏覽器。並非所有人都支持滾動應用到'HTML',有些需要'身體'。這取決於你是否處於怪癖模式。動畫化內聯框架時,問題更加嚴重

主題啓動器最終將動畫應用於html,body而不是彼此。

+0

是的,我閱讀這篇文章,但我決定搜索並詢問是否有任何破解 – semsem