这就是正在发生的事情。我有一个名为“home.html”的 html 文档。它包含许多 div,每个 div 都是一个帖子。我还有一个 index.html,其中有一个 div #content。index.html 中的内容为空,但通过 .load() 调用填充了 home.html 中的 div。此外,在 .load 调用中使用 div:nth-child(-n + 10) 我可以让它只加载前十个帖子。我如何使用 waypoint.js 来添加无限滚动?这样一旦滚动条到达底部的 75%,它就会从 home.html 加载接下来的 10 个 div。
问问题
6163 次
2 回答
4
在页面上加载 10 个元素后,连接一个将触发操作的 jquery 路点。
该操作的第一步是禁用航点(因此它只触发一次)。然后让它通过 ajax 加载其他数据并将其呈现在页面上。 完成后(通过回调),您将重新激活航点,以便在用户向下滚动到它时重新开始该过程。
您的应用程序必须跟踪加载了多少和哪些元素,因此您的 ajax 请求请求正确的数字(即加载了 10,因此下一个请求应该从 10 开始并获取 10,下一个请求应该从 20 开始并获取 10 , ETC)。
“到底部的 75%”很容易在航路点进行配置。您将为此使用“偏移量”。
查看航点文档
我将触发无限滚动的 DOM 元素放在我拥有的主网格下方,因此当我加载更多内容时,它会自动将其向下推。
于 2012-05-23T17:18:37.450 回答
1
我使用jquery masonry+waypoint js ..但是如果你没有在masonry回调中注册waypoint,它会多次加载你的ajax调用附带的项目。这是我的解决方案;
//INFINITE SCROLL
var $loading = $("#itemsloading"),
$footer = $('footer'),
opts = {
offset: '120%',
onlyOnScroll:false
};
$footer.waypoint(function(event, direction) {
$footer.waypoint('remove');
$loading.toggle(true);
$.get($('.more').attr('href'), function(data) {
var $data = $(data.result[0]);
if($(data.result[0]).length==0){
$loading.toggle(false);
return false;
}
$('#items').append( $data ).masonry( 'appended', $data, true,
function(){
$footer.waypoint(opts);
});
$loading.toggle(false);
});
}, opts);
于 2012-11-07T20:42:05.610 回答