Ich habe Div mit vertikaler Bildlaufleiste. Div wird dynamisch über Ajax aktualisiert und HTML wird mit der jQuery-Methode .html eingefügt. Nachdem div aktualisiert wurde, kehrt die Bildlaufleiste nach oben zurück und ich versuche, sie in der vorherigen Position zu halten.Warte auf die jquery .html-Methode, um das Rendering zu beenden
Dies ist, wie ich es bin versucht:
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 fehlender HTML-Einfügung fehlschlägt (zB kein Scroll).
Zum Beispiel funktioniert das.
setTimeout(function(){
$('div#some_id').scrollTop(scrollPos);
}, 200);
Aber das ist schmutzig meiner Meinung nach. Ich habe keine Möglichkeit zu wissen, dass einige Browser nicht mehr als diese 200ms benötigen, um eingefügten Inhalt zu rendern.
Gibt es eine Möglichkeit zu warten, bis der Browser das eingefügte HTML beendet hat, bevor er fortfährt?
http://stackoverflow.com/questions/2030497/how-can-you-get-your-code-to-wait-for-html -und-append-functions-to-complete sollte helfen – Dhiraj