Dobra, poniższy kod „działa”, że podczas przewijania na dole strony funkcja AJAX jest zwolniony, a wyniki są dołączane do div #postswrapper w sprawie strona.jQuery Nieskończony Scroll - zdarzenie wyzwala wiele razy podczas przewijania jest szybki
Problem polega na tym, że jeśli przewijam się bardzo szybko po dotarciu do dolnej części strony, AJAX strzela kilka razy i ładuje kilka zestawów wyników do div #postswrapper (liczba dodatkowych, "niechcianych" wyników jest określana przez ile dodatkowych zdarzeń przewijania zostało wystrzelonych przez szybkie przewijanie).
Ostatecznie muszę służyć tylko jeden zestaw wyników za czas użytkownik osiągnie dno. Próbowałem dodawać timery i takie, ale bez skutku. Oczywiście przechowywanie dodatkowych czynności przewijania w DOM i wypalanie ich w kolejności sekwencyjnej po tym.
Wszelkie pomysły?
Używam jquery.1.4.4.js jeśli pomaga nikomu. I e.preventDefault() nie działa, w tej sytuacji, tak czy inaczej.
$(window).scroll(function(e) {
e.preventDefault();
if ($(window).scrollTop() >= ($(document).height() - $(window).height())) {
$('div#loadmoreajaxloader').show();
$.ajax({
cache: false,
url: 'loadmore.php?lastid=' + $('.postitem:last').attr('id'),
success: function(html) {
if (html) {
$('#postswrapper').append(html);
$('div#loadmoreajaxloader').hide();
} else {
$('div#loadmoreajaxloader').html();
}
}
});
}
});
Niepożądane Powoduje to, że „loadmore.php” skrypt zostanie wykonany szereg dodatkowych czasy, kiedy nie jest to konieczne. Po prostu potrzebuję, za każdym razem, gdy użytkownik znajdzie się na dole strony, ten fragment kodu, aby uruchomić jeden (1) czas, załaduj odpowiednie wyniki za pomocą loadmore.php i nie ładuj niczego, dopóki użytkownik nie dotrze do dolnej części strony jeszcze raz. – Marc