Warten Sie, bis die jquery .html-Methode das Rendern beendet hat

Ich habe div mit vertikaler Bildlaufleiste. Div wird dynamisch über Ajax aktualisiert und HTML wird mit der .html-Methode von jQuery eingefügt. Nachdem div aktualisiert wurde, kehrt die Bildlaufleiste nach oben zurück und ich versuche, sie an der vorherigen Position zu halten.

So versuche ich es:

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
    }
});

Dies schlägt fehl. Meine beste Vermutung ist, dass es aufgrund von eingefügtem HTML nicht gerendert wird (dh keine Schriftrolle).

Zum Beispiel funktioniert das.

setTimeout(function(){
    $('div#some_id').scrollTop(scrollPos);
}, 200);

Aber das ist meiner Meinung nach schmutziger Hack. Ich habe keine Möglichkeit zu wissen, dass einige Browser nicht mehr als diese 200 ms benötigen, um eingefügten Inhalt zu rendern.

Kann ich warten, bis der Browser das Rendern der eingefügten HTML-Datei beendet hat, bevor ich fortfahre?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage