私は垂直スクロールバーでdivを持っています。 Divはajaxを介して動的に更新され、htmlはjQueryの.htmlメソッドを使用して挿入されます。 divが更新された後、スクロールバーが一番上に戻り、前の位置に保持しようとしています。jquery .htmlメソッドがレンダリングを完了するまで待ちます
これは、私はそれをしようとしている方法です:
var scrollPos = $('div#some_id').scrollTop(); //remember scroll pos
$.ajax({...
success: function(data) {
$('div#some_id').html(data.html_content); //insert html content
$('div#some_id').scrollTop(scrollPos); //restore scroll pos
}
});
これが失敗しました。私の最高の推測は、挿入されたhtmlがレンダリングされないために失敗していることです(つまり、スクロールしない)。
たとえば、これは機能します。
setTimeout(function(){
$('div#some_id').scrollTop(scrollPos);
}, 200);
これは私の意見では汚いハックです。私はいくつかのブラウザが挿入されたコンテンツをレンダリングするためにこれらの200ミリ秒以上を取らないことを知る方法がありません。
続行する前にブラウザが挿入されたHTMLのレンダリングを完了するのを待つ方法はありますか?
http://stackoverflow.com/questions/2030497/how-can-you-get-your-code-to-wait-for-htmlがあります-and-append-functions-to-completeは助けてください – Dhiraj