2

これらのコードでjquery.window.scroll関数を使用して無限ロードを使用しています。

$(window).scroll(function(){
    if  ($(window).scrollTop() == $(document).height() - $(window).height()){
        var page = $('#lastPostsLoader').attr('page')*1;
        $('#lastPostsLoader').attr('page', page + 1);
        DataLoadFunction(page);
    }
});

しかし、これらのコードは、一番下までスクロールすると、2倍の時間と、場合によっては誤ったページを要求します。このような;

下にスクロール--->ページ1を読み込んでページを読み込んでいます2--->下にスクロール--->ページ3を読み込んでページを読み込んでいます2--->下にスクロール--->ページ4を読み込んでいます....。

だから私はどこが間違っていますか?ありがとう...

4

1 に答える 1

4

次のデータが到着するまでデータのロードを防ぐ必要があります。サーバーからデータをロードしている間、変数isLoadingDataをtrueに設定します。

var isLoadingData;
 $(window).scroll(function(){
        if  (($(window).scrollTop() == $(document).height() - $(window).height()) && !isLoadingData ){
              isLoadingData = true; 
            var page = $('#lastPostsLoader').attr('page')*1;
            $('#lastPostsLoader').attr('page', page + 1);
            DataLoadFunction(page, function(){ //  callback get called after data load
                        isLoadingData  = false;
            });
        }
    });
于 2012-10-06T16:40:36.263 に答える