2017-07-04 113 views
0

我已經分頁並運行了,它工作正常。不過,我希望它只顯示5個頁碼,例如1.2.3.4.5,然後當我點擊下一個時,它會轉到6.7.8.9.10等等。限制分頁編號

我用JavaScript創建它,代碼如下。

我已經嘗試了來自不同地方的多段代碼,但我很積極,我錯過了一些東西,因爲沒有任何東西可以工作。

$(document).ready(function() { 

    pageSize = 2; 
    pagesCount = $(".content").length; 
    var currentPage = 1; 

    /////////// PREPARE NAV /////////////// 
    var nav = ''; 
    var totalPages = Math.ceil(pagesCount/pageSize); 
    for (var s=0; s<totalPages; s++){ 
     nav += '<li class="numeros"><a href="#">'+(s+1)+'</a></li>'; 
    } 
    $(".pag_prev").after(nav); 
    $(".numeros").first().addClass("active"); 
    ////////////////////////////////////// 

    showPage = function() { 
     $(".content").hide().each(function(n) { 
      if (n >= pageSize * (currentPage - 1) && n < pageSize * currentPage) 
       $(this).show(); 
     }); 
    } 
    showPage(); 


    $(".pagination li.numeros").click(function() { 
     $(".pagination li").removeClass("active"); 
     $(this).addClass("active"); 
     currentPage = parseInt($(this).text()); 
     showPage(); 
    }); 

    $(".pagination li.pag_prev").click(function() { 
     if($(this).next().is('.active')) return; 
     $('.numeros.active').removeClass('active').prev().addClass('active'); 
     currentPage = currentPage > 1 ? (currentPage-1) : 1; 
     showPage(); 
    }); 

    $(".pagination li.pag_next").click(function() { 
     if($(this).prev().is('.active')) return; 
     $('.numeros.active').removeClass('active').next().addClass('active'); 
     currentPage = currentPage < totalPages ? (currentPage+1) : totalPages; 
     showPage(); 
    }); 
}); 
+1

歡迎的StackOverflow!請向我們提供一些關於哪些代碼不適用的更多信息,以及您想實現的目標,以便我們爲您提供一些幫助。請同時參閱https://stackoverflow.com/help/how-to-ask –

+0

嗨,目前每當我添加新內容時,分頁都會添加另一個數字。所以目前我在頁面底部列出了數字1-10。不過,我希望它只顯示大約5個數字,直到我到達最後一個,然後它變成另外5個數字 – oOJimmyP

回答

1

你問題的第一部分是容易

但是我會把它想只顯示5個頁碼

for (var s=0; s<Math.min(totalPages,5); s++){ 
    nav += '<li class="numeros"><a href="#">'+(s+1)+'</a></li>'; 
} 

這限制了顯示頁碼數totalPages5,以較小者爲準。 對於你的問題的第二部分 - 看你found a lugin which does exactly what you want沒有太多的重點嘗試複製行爲。你最好直接使用它。適當的代碼將是沿着線:

pageSize = 2; 
 
pagesCount = $(".content").length; 
 
var totalPages = Math.ceil(pagesCount/pageSize) 
 

 
$('.pagination').twbsPagination({ 
 
    totalPages: totalPages, 
 
    visiblePages: 5, 
 
    onPageClick: function (event, page) { 
 
     var startIndex = (pageSize*(page-1)) 
 
     var endIndex = startIndex + pageSize 
 
     $('.content').hide().filter(function(){ 
 
      var idx = $(this).index(); 
 
      return idx>=startIndex && idx<endIndex; 
 
     }).show() 
 
    } 
 
});
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet"/> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script> 
 

 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/twbs-pagination/1.4.1/jquery.twbsPagination.js"></script> 
 
<div class="contents text-center"> 
 
    <div class="content"> 
 
     <h1>NEWS 1</h1> 
 
     <h3>Page 1 contents...</h3> 
 
    </div> 
 
    <div class="content"> 
 
     <h1>NEWS 2</h1> 
 
     <h3>Page 2 contents...</h3> 
 
    </div> 
 
    <div class="content"> 
 
     <h1>NEWS 3</h1> 
 
     <h3>Page 3 contents...</h3> 
 
    </div> 
 
    <div class="content"> 
 
     <h1>NEWS 4</h1> 
 
     <h3>Page 4 contents...</h3> 
 
    </div> 
 
    <div class="content"> 
 
     <h1>NEWS 5</h1> 
 
     <h3>Page 5 contents...</h3> 
 
    </div> 
 
     <div class="content"> 
 
     <h1>NEWS 6</h1> 
 
     <h3>Page 6 contents...</h3> 
 
    </div> 
 
     <div class="content"> 
 
     <h1>NEWS 7</h1> 
 
     <h3>Page 7 contents...</h3> 
 
    </div> 
 
     <div class="content"> 
 
     <h1>NEWS 8</h1> 
 
     <h3>Page 8 contents...</h3> 
 
    </div> 
 
     <div class="content"> 
 
     <h1>NEWS 9</h1> 
 
     <h3>Page 9 contents...</h3> 
 
    </div> <div class="content"> 
 
     <h1>NEWS 10</h1> 
 
     <h3>Page 10 contents...</h3> 
 
    </div> <div class="content"> 
 
     <h1>NEWS 11</h1> 
 
     <h3>Page 11 contents...</h3> 
 
    </div> 
 
</div> 
 
<nav class="text-center"> 
 
    <ul class="pagination"> 
 
    </ul> 
 
</nav>

+0

嗨,感謝您的幫助,我製作了一個快速的JSFiddle,因此它更好地向您展示。我把你的代碼放到了腳本中,但它不會超過5頁,即使在它之後有更多的內容。 https://jsfiddle.net/vhyxbr3r/84/ – oOJimmyP

+0

@oOJimmyP你意識到,在你的jsfiddle *每頁*之後5說第5頁?即。它工作正常 - 你的標記是錯誤的 – Jamiec

+0

是的,我剛剛複製和粘貼的代碼部分添加更多的內容,所以它會在分頁更多的頁面/數字 – oOJimmyP