2013-03-15 109 views
3

我在我的頁面上有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> 

回答

0

很難說沒有頁面進行實驗,但是......

除非您從第一標籤中的內容,它看起來你最後會在頁面上有多個元素(「#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

2

我知道這已經很長時間了,因爲你有這個問題。但是我今天也遇到了同樣的問題,而且要經過它才花了一段時間。但我終於做到了。

該插件將路徑和當前頁面存儲在某個變量中......因此,如果更改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://stackoverflow.com/questions/24442592/infinite-scroll-always-pull-nextselector-url – Lepi 2014-09-27 14:57:03