Подождите, пока 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, прежде чем продолжить?

Ответы на вопрос(4)

Ваш ответ на вопрос