0

無限スクロール設定のために新しいページを正しくロードするjqueryスクリプトがあります。私がやりたいのは、下から 300px 離れていると言うと、もっと読み込まれるようにすることです。私は今それを行うことができますが、残念ながらスクロールが複数回登録され、ajax がページの残りをロードします。setTimeout を試してみましたが、役に立ちませんでした。

        (function(){

            //inner functions will be aware of this
            var currentPage = 1;

                $(window).scroll(function() {

                if($(window).scrollTop() + $(window).height() > $(document).height() - 300) {

                    $.ajax({
                        type: "GET",
                        url: "posts/page/" + currentPage,
                        data: "",
                        success: function(results){
                            $(".container").append(results).masonry('reload');
                        }
                    })
                    setTimeout(currentPage++,3000);

                }

            });

        })();
4

2 に答える 2

6

この変更により、前の ajax リクエストがまだ終了していない場合、別の ajax リクエストを実行しません。

(function(){

    //inner functions will be aware of this
    var currentPage = 1,
        currentXHR;

        $(window).scroll(function() {

        if($(window).scrollTop() + $(window).height() > $(document).height() - 300) {

            if (currentXHR) {
                return;
            }

            currentXHR = $.ajax({
                type: "GET",
                url: "posts/page/" + currentPage++,
                data: "",
                success: function(results){
                    $(".container").append(results).masonry('reload');
                },
                complete: function() {
                    currentXHR = null;
                }
            })

        }

    });

})();
于 2012-09-02T23:05:26.740 に答える
0

ここには優れた RailsCast があります(Ruby を使用していなくても心配する必要はありません。JSON データを取得しているだけです)。

于 2012-09-02T23:06:02.810 に答える