Ho div con barra di scorrimento verticale. Div viene aggiornato dinamicamente tramite ajax e html viene inserito usando il metodo .html di jQuery. Dopo che div è stata aggiornata, la barra di scorrimento torna all'inizio e sto cercando di mantenerla nella posizione precedente.Attendi il metodo .html jquery per terminare il rendering
Questo è il modo che sto cercando è:
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
}
});
Questo fallisce. La mia ipotesi migliore è che non riesca a causa dell'inserimento di HTML non reso (cioè senza scorrimento).
Ad esempio questo funziona.
setTimeout(function(){
$('div#some_id').scrollTop(scrollPos);
}, 200);
Ma questo è un trucco sporco secondo me. Non ho modo di sapere che alcuni browser non prenderanno più di questi 200ms per rendere il contenuto inserito.
C'è un modo per attendere che il browser completi il rendering di html inserito prima di continuare?
http://stackoverflow.com/questions/2030497/how-can-you-get-your-code-to-wait-for-html -e-append-functions-to-complete dovrebbe aiutare – Dhiraj