Tengo div con barra de desplazamiento vertical. Div se está actualizando dinámicamente a través de ajax y html se inserta utilizando el método jQuery .html. Después de actualizar div, la barra de desplazamiento vuelve a la parte superior y trato de mantenerla en la posición anterior.Espere a que el método jquery .html finalice la representación
Ésta es la forma en que estoy tratando de que:
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
}
});
Esta falla. Mi mejor suposición es que está fallando debido a html insertado no procesado (es decir, sin desplazamiento).
Por ejemplo, esto funciona.
setTimeout(function(){
$('div#some_id').scrollTop(scrollPos);
}, 200);
Pero esto es un hack sucio en mi opinión. No tengo forma de saber que algunos navegadores no tardarán más de estos 200ms en renderizar el contenido insertado.
¿Hay alguna manera de esperar que el navegador termine de mostrar el html insertado antes de continuar?
http://stackoverflow.com/questions/2030497/how-can-you-get-your-code-to-wait-for-html -and-append-functions-to-complete debería ayudar – Dhiraj