ユーザーがスクロールしたときにデータベースからアイテムをロードするjQueryスクリプトを作成しました。唯一の問題は、ページの読み込み後にユーザーが非常に速くスクロールすると、スクリプトの結果が2倍になり、データベースからの情報が2回表示されることです。ここで何が起こっているのかよくわかりませんが、スクリプトは以下のとおりです。ちなみに、それはすべてドキュメントの準備ができています。
function last_item_funtion()
{
var ID=$(".newsItem:last").attr("id");
$('#feedLoader').html('<img src="../files/images/bigLoader.gif" style="display:block;margin-left:auto;margin-right:auto;">');
$.post("AJAX/scroll_feed.php?action=get&last_item_id="+ID,
function(data){
if (data != "") {
$(".newsItem:last").after(data);
}
$('#feedLoader').empty();
});
};
$(window).scroll(function(){
if ($(window).scrollTop() == $(document).height() - $(window).height()){
last_item_funtion();
}
});
これは私のjsfiddleではありませんが、スクリプトが何をするかを簡単に示しています。それは私が抱えている問題を示していませんが、データベース全体をjsfiddleに置くことができないため、それを再現することはできません。
更新 プレイした後、ユーザーがページを読み込んだ直後にスクロールしたときではなく、ユーザーが短いスクロールではなく1回連続してスクロールしたときであることに気付きました。このことから、スクロールが停止するまで、jQueryはデータがロードされたことを登録しないと推測しています。