.offset (). top zwraca niepoprawną wartość
Mam dziwny problem, którego nie wiem jak rozwiązać i zastanawiałem się, czy moglibyście pomóc.
Trochę tła: poproszono mnie o stworzenie systemu, w którym podstrony strony w wordpress są ładowane na końcu tej strony w nieskończonym przewinięciu. To działa poprawnie.
Chcą także, aby górne linki nawigacyjne ładowały całą zawartość do strony, do której kliknęły, a następnie przewijały do niej.
Jeśli przewijam w dół (ładuję strony), a następnie klikam górne łącze nawigacyjne, przewijanie działa poprawnie. Jeśli jednak nie załaduję żadnych dalszych stron przed kliknięciem jednego z linków, strony zostaną załadowane, a przewijanie się rozpocznie, ale tylko trochę się zatrzyma przed zatrzymaniem. Wynika to z niepoprawnej wartości podanej przez offset (). Top. Moje pytanie brzmi: dlaczego?
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;
}
Jakakolwiek pomoc, którą możesz mi dać w tej sprawie, byłaby naprawdę mile widziana!