【问题标题】:Limit Pagination Numbers限制分页数
【发布时间】:2021-07-27 18:21:14
【问题描述】:

我已经启动并运行了一个分页,它工作正常。但是我希望它只显示 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();
    });
});

【问题讨论】:

  • 欢迎来到 StackOverflow!请向我们提供更多信息,说明您的代码究竟有什么不适合的,以及您想用它实现什么,以便我们为您提供一些帮助。另请参阅stackoverflow.com/help/how-to-ask
  • 嗨,目前每次我添加新内容时,分页都会添加另一个数字。因此,目前我在页面底部列出了数字 1-10。但是我想要它,所以它只显示大约 5 个数字,直到我到达最后一个数字,然后它会更改为另外 5 个数字

标签: javascript pagination


【解决方案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>

【讨论】:

  • 您好,感谢您的帮助,我制作了一个快速的 JSFiddle,以便更好地向您展示。我将您的代码放入脚本中,但即使后面有更多内容,它也不会超过 5 页。 jsfiddle.net/vhyxbr3r/84
  • @oOJimmyP 你意识到在你的 jsfiddle every 页面中 5 之后的页面是第 5 页吗? IE。它工作正常 - 你的标记是错误的
  • 是的,我只是复制并粘贴了那部分代码以添加更多内容,以便在分页中产生更多页数/数字
  • 好的,但是您也从未在此答案中包含我的代码以将分页限制为 5 页。
  • 抱歉,我贴错了链接,我才注意到。这是 JSFiddle,其中包含您给我的代码行,对不起您编写的代码在仅显示前 5 个数字时工作正常,但如果我尝试单击过去的数字 5 到应该是数字 6 它确实没有什么。 jsfiddle.net/vhyxbr3r/86
猜你喜欢
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 1970-01-01
  • 2012-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多