0

ページの最後に到達するたびにトリガーされるロード機能を実装しました。基本的には機能していますが、下にスクロールするたびにイベントが何度もトリガーされます。このアイデアを実装するより良い方法や、このイベントを何度もトリガーしない方法はありますか?

これが私がしたことです:

var loading = false;
$(window).scroll(function(){
    if((($(window).scrollTop()+$(window).height())+250)>=$(document).height()){
        if(loading == false){
            loading = true;
            $.get("test", function(data){
             $("div.article:last").after(data);
});
            loading = false;

        }
    }
});
   $(document).ready(function() {
    $('#loaded_max').val(500);
});

ありがとうございました!

4

1 に答える 1

0

これをして:

$.get("test", function(data){
    $("div.article:last").after(data);
});
loading = false;

は、コールバック関数のloading=false;外にあります。$.getこれ$.getは非同期関数です。Ajax呼び出しの準備ができたときではなく、loading=false;直後に実行されます。$.get

loading=false;コールバックの中に入れた場合$.get。同時に複数のリクエストを受けることはありません。

一度に 1 つのリクエストのみを取得するソリューション:

$.get("test", function(data){
    $("div.article:last").after(data);
    loading = false;
});

また、人々が一番下に到達する前に、400px のようなページの次の部分の読み込みを開始します。そのため、ユーザーはスクロールを続けることができ、リクエストの準備が整うまで待つ必要がありません。その方がスムーズです。

于 2013-02-06T19:08:34.590 に答える