nextSelector无限滚动更新

问题描述:

我在我的页面上有2个标签,每个标签有infinite-scroll不同的内容。 当标签切换的功能被称为像这样:nextSelector无限滚动更新

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值是变化的,变化不是无限滚动反映其仍然采取旧值第一个标签。

编辑: 我的HTML:

<div id="main-container" class="span8"> 
     <div id="main"> 
     </div> 
     <div id="page-nav"> 
      <a href=""></a> 
     </div>  

    </div> 

很难说没有页面进行实验,但是......

除非您从第一标签中的内容,它看起来你最后会在页面上有多个元素(“#page-nav”),这在CSS中是非法的。你可能会发现jQuery只是返回第一个。您可以考虑使用基于类的解决方案而不是ID。

+0

对不起,我感到困惑。我编辑了内容。在页面上只有一个'page-nav',其href我正在编辑.. – soundswaste 2013-03-15 08:39:30

+0

您确定load()调用实际上是再次调用吗?它看起来只能运行一次(在页面加载时)。 – 2013-03-15 09:16:17

+0

是的,负载被调用。每次单击选项卡上的按钮时,都会调用整个函数callInfScroll。我怀疑这个滚动插件有些可疑。 – soundswaste 2013-03-15 09:24:24

我知道这已经很长时间了,因为你有这个问题。但是我今天也遇到了同样的问题,而且要经过它才花了一段时间。但我终于做到了。

该插件将路径和当前页面存储在某个变量中......因此,如果更改page_nav href,则无关紧要。

因此,您不仅需要更改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> 

在这种情况下,该插件存储我的网址进入opts.path [0]

http://localhost/trunx/blog/page/all/ 

而且当前页面存储到opts.state.currPage

假设您的新网址如下所示:

http://localhost/trunx/blog/page/programing/1 

你可以看到,在这个新的URL我改变了类别从所有编程和的页面

我所做的是:

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。

+0

现在有一个“路径”设置,您可以在其中定义自己的逻辑以构建下一页的网址。 这将每次运行,并采取您返回的价值。 http://*.com/questions/24442592/infinite-scroll-always-pull-nextselector-url – Lepi 2014-09-27 14:57:03