.offset (). top gibt den falschen Wert zurück

Ich habe ein bizarres Problem, das ich nicht lösen kann, und habe mich gefragt, ob ihr helfen könntet.

Ein bisschen Hintergrundwissen: Ich wurde gebeten, ein System zu erstellen, in dem Unterseiten einer Seite in WordPress am Ende dieser Seite in einer unendlichen Schriftrolle geladen werden. Das funktioniert richtig.

Sie möchten auch, dass die obersten Navigationslinks den gesamten Inhalt bis einschließlich der angeklickten Seite laden und dann dorthin scrollen.

Wenn ich nach unten scrolle (die Seiten lade) und dann auf einen Top-Nav-Link klicke, funktioniert der Bildlauf korrekt. Wenn ich jedoch KEINE weiteren Seiten lade, bevor ich auf einen der Links geklickt habe, werden die Seiten geladen und der Bildlauf wird gestartet, es wird jedoch nur ein Teil des Weges vor dem Stoppen angezeigt. Dies liegt daran, dass ein falscher Wert durch offset () angegeben wird. Top. Meine Frage ist warum?

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

Jede Hilfe, die Sie mir zu diesem Thema geben könnten, wäre sehr dankbar!

Antworten auf die Frage(0)

Ihre Antwort auf die Frage