.offset (). top devolviendo el valor incorrecto

Estoy teniendo un problema extraño que no sé cómo resolver y me preguntaba si podrían ayudar.

Un poco de fondo: se me ha pedido que cree un sistema en el que se carguen subpáginas de una página en wordpress al final de esa página en un desplazamiento infinito. Esto está funcionando correctamente.

También desean que los enlaces de navegación superiores carguen todo el contenido hasta la página en la que hicieron clic y luego se desplazan a ella.

Si me desplazo hacia abajo (cargando las páginas) y luego hago clic en un enlace de navegación superior, el desplazamiento funciona correctamente. Sin embargo, si no carga más páginas antes de hacer clic en uno de los enlaces, las páginas se cargarán y el desplazamiento se iniciará, pero solo se mostrará una parte antes de detenerse. Esto se debe a un valor incorrecto dado por offset (). Top. Mi pregunta es ¿por qué?

function ajaxloadnscroll(index) {

    //If the page has already been loaded then just scroll to it
    if (pages[index].loaded) {
        $('html, body').animate({
            scrollTop: $("#" + pages[index].name).offset().top
        }, 2000);
        return;
    }

    //Loop through pages up to one clicked.
    for (i = 0; i <= index; i++) {


        current = i;
        if (!pages[current].loaded) {
            $.ajax({
                url: pages[i].url,
                async: false,
                context: document.body,
                success: function(data) {
                    if (data) {
                        $("#tempload").before(data);
                        pages[current].loaded = true;

                        if (current == index) {
                            $('html, body').animate({
                                scrollTop: $("#" + pages[current].name).offset().top
                            }, 2000);
                        }

                    }
                }
            });
        }
    }

    //Increment current in order to load next page object on scroll.
    current++;
    return false;
}​

Cualquier ayuda que me pueda dar sobre este tema sería muy apreciada!

Respuestas a la pregunta(0)

Su respuesta a la pregunta