У меня есть 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);
Но это грязный хак, на мой взгляд. Я не могу понять, что некоторые браузеры не будут принимать больше этих 200 мс, чтобы отображать вставленный контент.
Есть ли способ подождать, пока браузер завершит рендеринг вставленного html, прежде чем продолжить?