2017-08-31 7 views
0

私は情報の無制限のスクロールに取り組んでいます。無制限のスクロールjson新しい結果を得る

.each関数でsliceを使用するjquery関数が呼び出されました。デフォルトでは10ですが、スクロールすると2倍になります。

しかし、私はスクロールするたびに、新しいアイテムを追加してその下に同じものを追加します。

しかし、私は同じ10個のアイテムを持っており、10個以上の新しいアイテムがデフォルトのアイテム数よりも少なく表示されることを覚えています。

コード:

var win = $(window); 
// Each time the user scrolls 
win.scroll(function() { 
    // End of the document reached? 
    if ($(document).height() - win.height() == win.scrollTop()) { 
     $('#loading').show(); 

     getEvents(10 * 2); 

    } 
}); 

私はあなたから聞きたい、どうもありがとう!

答えて

2

Ajaxのレスポンスはわずか10品目ごとに呼び出し、その戻ります:getEvents(0,10)と

第一の呼び出しを。 10要素の配列を返します

2回目の呼び出しはgetEvents(10,20)で行います。次の10個の要素

を返す...

NはgetEvents(N * 10、N + 1 * 10)で呼び出します。あなたの関数で

はそう:

// on page load run : 
getEvents(10 , 20); 
// add counter 
var counter = 2; 
// Each time the user scrolls 
win.scroll(function() { 
    // End of the document reached? 
    if ($(document).height() - win.height() == win.scrollTop()) { 
    $('#loading').show(); 

    getEvents(counter * 10 , ++counter * 10); 

    } 
}); 

も、がスクロールイベントをデバウンスしてみてください。

このヘルプが必要です

+0

ありがとうございますが、getEvents()関数には2つのパラメータが必要です。私はeach()でslice()を使っているので、0から10までのイベントのように、私はスクロールするたびに* 2が必要です。最初の0〜10、2番目の10〜20などなど –

+0

ありがとう、しかし、今問題は、最初の試みは、新しいものが示す2回目の試行でのみ同じアイテムを取得するということです。 :S –

+1

@PieterDijkstra最後にロードされた要素を何らかの形で追跡する必要があります。あなたのソートモードはわかりませんが、私たちはいくつかのプロジェクトのように、他の人の間に挿入できる要素を持たないことを願っています。そうでなければ、複雑になります(パスファインディングのためのおめでとう:btw:P) – Kaddath

関連する問題