さて、以下のコードは、ページの一番下までスクロールすると AJAX 関数が起動され、結果がページの #postswrapper div に追加されるという点で「機能」します。
問題は、ページの下部に到達したときに非常に速くスクロールすると、AJAX が数回起動し、いくつかの結果セットを #postswrapper div にロードすることです (追加の「不要な」結果の数は、追加のスクロールの数によって決まります)イベントはすばやくスクロールすることによって発生しました)。
最終的には、ユーザーが一番下に到達するたびに 1 セットの結果を提供するだけで済みます。タイマーなどを追加しようとしましたが、役に立ちませんでした。明らかに、追加のスクロール アクションを DOM に格納し、その後、それらを順番に実行しています。
何か案は?
それが誰かを助けるなら、私はjquery.1.4.4.jsを使用しています。とにかく、この状況では e.preventDefault() は機能しません。
$(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();
}
}
});
}
});