我的页面上有 2 个选项卡,每个选项卡都有 infinite-scroll对于不同的内容。 当选项卡切换时,将调用如下函数:
function callInfScroll(newlink){
var $container = '#main';
$('#page-nav').find('a').attr('href',newlink);
$container.load(newlink, function(){
$container.infinitescroll({
loading: {
finishedMsg: "This is it"
},
navSelector : '#page-nav',
// selector for the paged navigation
nextSelector : '#page-nav a',
// selector for the NEXT link (to page 2)
itemSelector : '.item',
// selector for all items you'll retrieve
errorCallback: function(){
$('#page-nav').html("Congratulations! You have reached the end of internet.");
$('#page-nav').css({display: 'block'});
}
});
});
}
问题是,即使 #page-nav a
的值正在更改,但该更改不会反射(reflect)在无限滚动中,并且它仍然采用第一个选项卡中的旧值。
编辑: 我的 HTML :
<div id="main-container" class="span8">
<div id="main">
</div>
<div id="page-nav">
<a href=""></a>
</div>
</div>
最佳答案
我知道您已经很久没有遇到这个问题了。但我今天遇到了同样的问题,花了一段时间才解决。但我终于做到了。
该插件将路径和当前页面存储在某个变量中...因此,如果您更改 page_nav href 并不重要。
所以你不仅需要更改url,还需要更改插件存储的变量。
首先,您需要了解无限滚动将您的 URL 分成两部分:URL 和下一页编号。
将此视为您的 page_nav。
<div id="page_nav" style="display: none;">
<a href="http://localhost/trunx/blog/page/all/4">Próxima Página »</a>
</div>
在这种情况下,插件将我的 URL 存储到 opts.path[0]
http://localhost/trunx/blog/page/all/
并将当前页面存储到opts.state.currPage
假设您的新网址如下:
http://localhost/trunx/blog/page/programing/1
您可以看到,在这个新网址中,我将类别从全部更改为编程,并将页面从4更改为1
我所做的是:
var newPath = 'http://localhost/trunx/blog/page/programing/';
var newPage = 1;
// Changes the page_nav href.
$('#page_nav a').attr('href', newPath+newPage);
// Changes the plugin's stored variables
$('.postsBlog').infinitescroll({path:[newPath,''],state: {currPage:newPage-1}});
// This resets the pagination binder so if you had reached the end,it will now start paginating again.
$('.postsBlog').infinitescroll('bind');
考虑.postsBlog是应用infiniteScroll的容器。
您可以看到,当我设置新的 currPage 时,我从中减去 1。这是因为无限滚动在设置下一页时会自动加1。
关于jquery - nextSelector 在无限滚动中不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15427563/