2012-02-19 10 views
2

私はfollowing jQuery InfiniteScrollプラグインを使用していますが、実際には動作しますが、最後のページを何度も何度も読み続けると、それを止めることはできません。ここで私が使用したコードです:jQuery InfiniteScrollプラグインが最後のページを何度も読み込みます

$('#catalog').infinitescroll({ 

     navSelector : "div.page-nav:last",    
         // selector for the paged navigation (it will be hidden) 
     nextSelector : "div.page-nav a.navnext:last",  
         // selector for the NEXT link (to page 2) 
     itemSelector : "#catalog div.single",   
         // selector for all items you'll retrieve 

     bufferPx  : 400 
}); 

そして、私のページネーションは、次のようになります。

<div id="page-nav" class="page-nav"> 
    <div class="top"> 
     <a id="page-1" class="active">1</a> 
     <a id="page-2" href="?page=2">2</a> 
     <a id="page-3" href="?page=3">3</a> 
     <a id="page-4" href="?page=4">4</a> 
     <a id="page-5" href="?page=5">5</a> 
     <a id="page-6" href="?page=6">6</a> 
     <a id="page-7" href="?page=7">7</a> 
     </div> 
    <div class="bottom"> 
     <span class="right"> 
      <a class="navnext" href="?page=2" id="next-2">Next</a> 
       <span class="next">Ctrl</span> 
     </span> 
    </div> 
</div> 

誰でも、これで私を助けてくださいもらえますか?

ありがとうございます。

+0

にロードされたページを制限するために以下を追加することができますそうでなければ... – hackartist

答えて

6

OK。これは実際にInfinite Scrollプラグインのバグではありませんでした。このようなページがない場合、私のスクリプトは404エラーを返さないというケースがあります。単にコンテンツに何度も追加されていた最後のページを返すだけでした。この問題を解決するために、表示したいすべてのページの数を保存し、各コンテンツのロード後に変数をインクリメントし、すべてのページが正常に読み込まれたらスクロールを解除しました。コードは以下の通りです:

var curPage = 1; 
var pagesNum = $("div.page-nav").find("a.pag:last").text(); // Number of pages 

$('#catalog').infinitescroll({ 

     navSelector : "div.page-nav:last",    
         // selector for the paged navigation (it will be hidden) 
     nextSelector : "div.page-nav a.navnext:last",  
         // selector for the NEXT link (to page 2) 
     itemSelector : "#catalog div.line",   
         // selector for all items you'll retrieve 

     bufferPx  : 800 

     }, function() { // Optional callback when new content is successfully loaded 

      curPage++; 

      if(curPage == pagesNum) { 

       $(window).unbind('.infscr'); 

      } else {} 

}); 

私はこれが他の人に役立つことを願っています。

+2

最近のバージョンでは、コールバック関数の代わりにパラメータmaxPage:pagesNum(pagesNumを定義した後)を含めることができます。 – spsaucier

0

ただ、便利なヒントがありますがMagentoのカテゴリの製品一覧ページにこれをやっている場合、あなたはそれが「無限」ではないでしょう正しい最大

maxPage: "<?php echo $_productCollection->getLastPageNumber(); ?>", 
関連する問題