2017-08-31 83 views
0

我正在处理无限滚动的信息。我已经调用了一个jQuery函数,在.each函数中使用切片,默认情况下它是10,但我想,如果向下滚动数量将增加* 2倍。无限滚动json获得新结果

但是每次我滚动他都会在下面添加更多新项目。

但我想要的是,我有相同的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个参数。因为我在每个()上使用slice(),就像0到10个事件一样,而且我希望每次滚动时我都想要* 2,所以。第一次尝试0到10,第二次10到20等等。 –

+0

谢谢你,但现在的问题是,第一次尝试我只有第二次尝试新东西显示相同的项目。 :S –

+1

@PieterDijkstra你应该以某种方式跟踪你上次加载的元素。我不知道你的排序模式,但我希望你没有可以插入其他元素之间的元素,就像我们在某个项目中所做的那样,否则就会变得很复杂(恭喜你的寻路工具顺便说一句:P) – Kaddath