2011-10-19 15 views
0

私はJQueryを実行していますが、AJAXコールのコールバックとしてscrollTopアニメーションを使用してウィンドウを上部(約240ピクセル、幾分可変です)近くに戻したいと思います。ページ上の大量のHTMLコンテンツを置き換えます。jQuery scrollTopアニメーションHTMLレンダリングとして

私が使用している:

$("html, body").animate({ scrollTop: someNumericalVariable }); 

を私はに実行し、問題は、このコードは、遅延やタイムアウトなしで実行するときに、ウィンドウがどこにも近い場所に、非常に小さなスクロールアニメーションを行います、ということです希望。任意の遅延(少なくとも1〜数秒)を追加すると、ウィンドウが目的の位置に終わることもあれば終わらないこともありますが、アニメーションはほとんどアニメーションではありません(2つの別々のscrollTop呼び出しのように機能します)上向きにジャンプし、1秒待ってから、再び上向きに正しい位置にジャンプします)。

コードを別々に実行すると(HTMLレンダリングの途中でコールバックとしてではなく)、アニメーションが正常に動作しているようです。

アイデア?前もって感謝します。

+0

なぜページをレンダリングするときにスクロールしようとしていますか?このようなことをする前に、ページが完全に読み込まれるまで待つのはなぜですか? – Sparky

+0

@ Sparky672 AJAX呼び出しのコンテンツがレンダリングされるときにページが最上部に表示されるようにする – rickyduck

+0

動的に追加されたHTMLがレンダリングされたときに検出する方法はありますか? – dchang

答えて

0

ajax呼び出しが完了し、データを処理した後でscrollTop()位置をアニメートします。たとえば:何かが右のあなたのために働いていない場合は

$.ajax({ 
    url: "data.html", 
    success: function(html) { 
    $('#content').append(html); // process data first 

    var someNumericalVariable = randomCalculation(); // do whatever calculation you need to do to figure out scrolltop 
    $("html, body").animate({ scrollTop: someNumericalVariable }); // animate scrolltop 
    } 
}); 

は、いくつかのコードを投稿したり、jsFiddleを作り、我々は何が起こっているかを知るために見ているでしょう。

関連する問題