【问题标题】:client-side javascript-jquery pagination with previous and next feature具有上一个和下一个功能的客户端 javascript-jquery 分页
【发布时间】:2016-06-18 02:35:19
【问题描述】:

我创建了一个简单的 JavaScript-jQuery 分页,它工作正常,但下一个和上一个函数我不知道创建该函数来显示下一个和上一个项目。

假设我们有一个固定的容器,其中包含多个 div 项目,这些项目具有固定的高度和高度。容器有 33 项,但只会显示 10 项进行分页。

浏览器加载所有项目都添加了hideme类,因此所有项目都用display: none隐藏,然后jquery脚本将删除类hideme到前10个项目并创建分页按钮。对于我们的示例,我们有 33 个项目,因此我们创建了 4 个分页按钮,每个分页按钮在单击后会找到 10 个项目到接下来的 10 个项目(和剩余项目)。

到目前为止,我已经想出了下面的分页脚本:

HTML

<div id="container">
  <ul class="items">
    <li>item 1</li>
    <li>item 2</li>
    <li>item 3</li>
    <li>item 4</li>
    <li>item 5</li>
    <li>item 6</li>
    <li>item 7</li>
    <li>item 8</li>
    <li>item 9</li>
    <li>item 10</li>
    <li>item 11</li>
    <li>item 12</li>
    <li>item 13</li>
    <li>item 14</li>
    <li>item 15</li>
    <li>item 16</li>
    <li>item 17</li>
    <li>item 18</li>
    <li>item 19</li>
    <li>item 20</li>
    <li>item 21</li>
    <li>item 22</li>
    <li>item 23</li>
    <li>item 24</li>
    <li>item 25</li>
    <li>item 26</li>
    <li>item 27</li>
    <li>item 28</li>
    <li>item 29</li>
    <li>item 30</li>
    <li>item 31</li>
    <li>item 32</li>
    <li>item 33</li>
  </ul>
</div>

<div class="pagination_wrapper">
  <div class="pagination">
    <div class="previous button">Previous</div>
    <!-- insert pagination buttons here -->
    <div class="next button insertbeforer">Next</div>
  </div>
</div>

JAVASCRIPT

$(document).ready(function() {
  // count number of items
  var count_items = $(".items li").length;

  // divide items by 10
  var separate_items = count_items / 10;

  // create empty variable
  var page_division = "";

  // check separate_items if contains decimal if true add additional pagination
  if (separate_items % 1 != 0) {
    page_division = separate_items + 1;
    console.log(page_division);
  } else {
    page_division = separate_items;
    console.log(page_division);
  }

  // iterate then generate links for each items pagination
  for (var items_pagination = 1; items_pagination < page_division; items_pagination++) {
    $(".pagination .insertbeforer").before("<div class='button page" + items_pagination + "'>" + items_pagination + "</div>");
  };

  // hide all items
  $('.items li').addClass('hideme');

  // display first 10 items
  $.each($('.items li'), function(index, value) {
    if (index <= 9) {
      $(this).toggleClass('hideme')
    }
  });

  // display items from 1-10
  $(".page1").click(function() {
    $('.items li').addClass('hideme');
    for (var item = 1; item < 11; item++) {
      $(".items li:nth-of-type(" + item + ")").removeClass('hideme');
    };
  });
  // display items from 11-20
  $(".page2").click(function() {
    $('.items li').addClass('hideme');
    for (var item = 11; item < 21; item++) {
      $(".items li:nth-of-type(" + item + ")").removeClass('hideme');
    };
  });
  // display items from 21-30
  $(".page3").click(function() {
    $('.items li').addClass('hideme');
    for (var item = 21; item < 31; item++) {
      $(".items li:nth-of-type(" + item + ")").removeClass('hideme');
    };
  });
  // display items from 31-33
  $(".page4").click(function() {
    $('.items li').addClass('hideme');
    for (var item = 31; item < 41; item++) {
      $(".items li:nth-of-type(" + item + ")").removeClass('hideme');
    };
  });

});

CSS

#container{width:420px;height:300px;display:block;overflow:hidden;border:1px solid gray}
.items{flex-direction:row;display:flex;flex-wrap:wrap}
.items li{list-style:none;display:block;width:60px;height:60px;background:red;margin:5px;color:#fff}
.pagination_wrapper{width:420px;height:30px;display:block;border:1px solid gray}
.pagination{margin-left:15%}
.pagination .button{background:transparent;color:#000;border:transparent;font-weight:700;margin-left:2px;border-radius:3px!important;padding:1px 10px;line-height:1.8em;border:1px solid #535353;display:inline;cursor:pointer}
.hideme{display:none!important;width:0;height:0}

在此处链接到工作 jsfiddle https://jsfiddle.net/jsbrianluna/wctnbbvq/17/

【问题讨论】:

  • 为什么每次页面点击都有一个事件监听器?使其可在传递下一个页码的单个函数中重复使用。如果您将当前页码存储在变量中,您也可以将其用于下一个和上一个。单击下一个/上一个后,您只需降低它并使用该数字调用上述功能..
  • 我也试过了。不适用于我的代码。
  • 你能分享一下不起作用的代码吗?
  • 如果点击分页按钮,我的代码只会跟踪 url 上的哈希值,将为链接添加哈希值,例如我点击了分页按钮 1,如果按钮 2,它将向当前链接“#1”添加哈希值点击的“#2”将被添加到 url。如果用户在当前带有哈希“#2”的 url 时单击下一步按钮,脚本会将哈希号更改为“#3”,但在触发按钮 3 分页时不起作用
  • 有点快和肮脏,但它的工作原理..jsfiddle.net/1w1euu3z

标签: javascript html pagination


【解决方案1】:

他是一个有效的例子:

$(document).ready(function() {
  // count number of items
  var count_items = $(".items li").length;

  // Keep a record of current page.
  var current_page = 1;

  // divide items by 10
  var separate_items = count_items / 10;

  // create empty variable
  var page_division = "";

  if (separate_items % 1 != 0) {
    page_division = separate_items + 1;
    console.log(page_division);
  } else {
    page_division = separate_items;
    console.log(page_division);
  }

  // iterate then generate links for each items pagination
  for (var items_pagination = 1; items_pagination < page_division; items_pagination++) {
    $(".pagination .insertbeforer").before("<div class='button page" + items_pagination + "'>" + items_pagination + "</div>");
  };

  // hide all items
  $('.items li').addClass('hideme');

  // display first 10 items
  $.each($('.items li'), function(index, value) {
    if (index <= 9) {
      $(this).toggleClass('hideme')
    }
  });

  // display items from 1-10
  $(".page1").click(function() {
    current_page = 1;
    $('.items li').addClass('hideme');
    for (var item = 1; item < 11; item++) {
      $(".items li:nth-of-type(" + item + ")").removeClass('hideme');
    };
  });
  // display items from 11-20
  $(".page2").click(function() {
    current_page = 2;
    $('.items li').addClass('hideme');
    for (var item = 11; item < 21; item++) {
      $(".items li:nth-of-type(" + item + ")").removeClass('hideme');
    };
  });
  // display items from 21-30
  $(".page3").click(function() {
    current_page = 3;
    $('.items li').addClass('hideme');
    for (var item = 21; item < 31; item++) {
      $(".items li:nth-of-type(" + item + ")").removeClass('hideme');
    };
  });
  // display items from 31-33
  $(".page4").click(function() {
    current_page = 4;
    $('.items li').addClass('hideme');
    for (var item = 31; item < 41; item++) {
      $(".items li:nth-of-type(" + item + ")").removeClass('hideme');
    };
  });
  $('.next').click(function() {
    //count_items=total
    if ((current_page) * 10 >= count_items) {
      return;
    }
    $('.items li').addClass('hideme');

    for (var item = ((current_page) * 10 + 1); item < ((current_page + 1) * 10 + 1); item++) {
      $(".items li:nth-of-type(" + item + ")").removeClass('hideme');
    };
    current_page += 1;
  })
  $('.previous').click(function() {
   
    
    if (current_page == 1) {
      return;
    }
    $('.items li').addClass('hideme');
    current_page -= 1;
    for (var item = ((current_page - 1) * 10 + 1); item < ((current_page) * 10 + 1); item++) {
      $(".items li:nth-of-type(" + item + ")").removeClass('hideme');
    };

  })

});
#container {
  width: 420px;
  height: 300px;
  display: block;
  overflow: hidden;
  border: 1px solid gray;
}

.items {
  flex-direction: row;
  display: flex;
  flex-wrap: wrap;
}

.items li {
  list-style: none;
  display: block;
  width: 60px;
  height: 60px;
  background: red;
  margin: 5px;
  color: white;
}

.pagination_wrapper {
  width: 420px;
  height: 30px;
  display: block;
  border: 1px solid gray;
}

.pagination {
  margin-left: 15%;
}

.pagination .button {
  background: transparent;
  color: black;
  border: transparent;
  font-weight: 700;
  margin-left: 2px;
  border-radius: 3px !important;
  padding: 1px 10px;
  line-height: 1.8em;
  border: 1px solid #535353;
  display: inline;
  cursor: pointer;
}

.hideme {
  display: none !important;
  width: 0px;
  height: 0px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="container">
  <ul class="items">
    <li>item 1</li>
    <li>item 2</li>
    <li>item 3</li>
    <li>item 4</li>
    <li>item 5</li>
    <li>item 6</li>
    <li>item 7</li>
    <li>item 8</li>
    <li>item 9</li>
    <li>item 10</li>
    <li>item 11</li>
    <li>item 12</li>
    <li>item 13</li>
    <li>item 14</li>
    <li>item 15</li>
    <li>item 16</li>
    <li>item 17</li>
    <li>item 18</li>
    <li>item 19</li>
    <li>item 20</li>
    <li>item 21</li>
    <li>item 22</li>
    <li>item 23</li>
    <li>item 24</li>
    <li>item 25</li>
    <li>item 26</li>
    <li>item 27</li>
    <li>item 28</li>
    <li>item 29</li>
    <li>item 30</li>
    <li>item 31</li>
    <li>item 32</li>
    <li>item 33</li>
  </ul>
</div>

<div class="pagination_wrapper">
  <div class="pagination">
    <div class="previous button">Previous</div>
    <!-- insert pagination buttons here -->
    <div class="next button insertbeforer">Next</div>
  </div>
</div>

您会注意到我添加了当前页面变量并将其添加到您的所有按钮单击定义中。

我还添加了上一个和下一个功能。

【讨论】:

  • 非常感谢您的努力。伟大的工作如此简单易懂,但我更喜欢 user352 的脚本......
猜你喜欢
  • 2020-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-28
  • 1970-01-01
相关资源
最近更新 更多