我正在做一个类似于谷歌阅读器的项目。
我正在使用无限滚动jQuery插件,它与查看默认选定类别(在可滚动div中)的内容完全一样。
然而,当选择另一个类别(或Google Reader的情况下的文件夹)时,该类别的内容将ajax加载到与上面相同的div容器中(基本上与Google Reader完全相同)并向下滚动到第2页问题因为它将移动到之前选择的任何页面+1,而不是从选择新类别时开始。
我认为基本上我需要一种方法来在选择新类别时重置插件。非常感谢任何帮助。
答案 0 :(得分:1)
我意识到这是一个非常普遍的问题。我希望找到一个做过类似事情的人。
无论如何,这可能不是最佳的,但我解决了这个问题。
我将此函数添加到插件中,可以从插件外部调用:
this.resetPlugin = function() {
$(document).unbind('retrieve.infscr',kickOffAjax);
props.currPage = 1;
};
我像这样加载插件
window.infinitescroll = $('#content').infinitescroll({usual settings});
我可以在选择其他类别时重置它:
window.infinitescroll.resetPlugin();
答案 1 :(得分:1)
你的回答对我不起作用。这是我做的:
你必须为InfiniteScroll的重新实例设置两个变量才能工作。你还必须重新绑定它。这是代码:
$('#myContainer').infinitescroll('destroy'); // Destroy
// Undestroy
$('#myContainer').infinitescroll({
state: {
isDestroyed: false,
isDone: false
}
});
InitInfiniteScroll(); // This is a wrapper for the standard initialization you need
// Re-initialize
$('#myContainer').infinitescroll('bind');
答案 2 :(得分:0)
只有这对我有用,可能这个解决方案已经过时了:
答案 3 :(得分:0)
如果有人遇到类似的问题,只想为我的答案做出贡献。
var off = 0;
var infinite = {};
function loadMorePosts(cat, offset){
//FUNKY AJAX LOAD
}
function initInfinite(){
infinite = new Waypoint.Infinite({
element: $('.infinite-container')[0],
onBeforePageLoad: function() {
console.log(off);
var cat = $('.f-categories').val();
loadMorePosts(cat, off);
off += 5;
},
onAfterPageLoad: function(){
//console.log($.noop);
}
});
}
initInfinite();
$(function() {
$('.f-categories').change(function(){
var cat = $(this).val();
off = 0;
infinite.destroy();
$('.grid').html('');
initInfinite();
loadMorePosts(cat,off);
});
});