Подождите, пока jquery .html метод завершит рендеринг
У меня есть div с вертикальной полосой прокрутки. Div обновляется динамически через ajax, а html вставляется с использованием метода jQuery's .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, прежде чем продолжить?