垂直スクロールバー付きのdivがあります。Divはajaxを介して動的に更新され、htmlはjQueryの.htmlメソッドを使用して挿入されます。divが更新された後、スクロールバーが一番上に戻り、前の位置に維持しようとしています。
これが私が試している方法です:
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);
しかし、これは私の意見では汚いハックです。一部のブラウザが挿入されたコンテンツをレンダリングするのにこれらの200ms以上かかることはないことを私は知る方法がありません。
続行する前に、ブラウザが挿入されたhtmlのレンダリングを終了するのを待つ方法はありますか?