javascript - 更改上一页和下一页以进行分页,具有过滤功能

标签 javascript jquery html filter pagination

我正在使用这个jsfiddle代码并尝试更改为以下要求。

  1. 将“上一页”和“下一页”按钮更改为分页(例如 1 2 3 4 等)
  2. 在首页显示“类别 1”内容,而不是显示所有内容

这是我已更改为分页的代码,但我不确定如何将其与过滤功能结合起来。并且也不知道如何在首页上显示“类别 1”内容。希望你们中的一些人能给我一些建议。谢谢!

请注意过滤功能。

var visible = "";

$('div.filter').delegate('a', 'click', function (event) {
  visible = '.' + this.href.slice(this.href.indexOf("#") + 1);
    //$('ul.items li').hide().filter(visible).show();
    pagination();
  event.preventDefault();
});

pageSize = 5;
var i = 1;
showPage = function(page) {
    $("li").hide();
    $("li").each(function(n) {
        if (n >= pageSize * (page - 1) && n < pageSize * page)
            $(this).show();
    });        
}

showPage(i);

function pagination(action) {

    var pages = Math.ceil($('li').length / pageSize) 
    for (var i = 0; i<pages; i++) {
       $('#pager').append('<a href="#" class="pageClick">'+(i+1)+'</a> &nbsp;');
    }
    $('.pageClick').on('click', function(e) {
       e.preventDefault();
       showPage($(this).index()+1);
    });

}

pagination();
ul{list-style: none;}

#item-wrapper {
 width:250px;   
 margin:30px 0 0 30px;
}
.items li {
 font-family:arial;
font-size:13px;
 background-color:#ccc;
margin-bottom:1px; 
padding:5px;    
}
.ctrl-nav {
    background-color:#999;
    padding:5px;
    overflow:hidden;
}
.ctrl-nav a {
    font-family:arial;
font-size:13px;
    padding:5px 10px;
    color:#fff;
}
.ctrl-nav a#prev{
 float:left;   
}
.ctrl-nav a#next{
 float:right;   
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="filter">
    <a href="#category-1">category 1</a>
    <a href="#category-2">category 2</a>
</div>

<div id="item-wrapper">
<ul class="items">
    <li class="category-1">item 1</li>
    <li class="category-1">item 2</li>
    <li class="category-1">item 3</li>
    <li class="category-1">item 4</li>
    <li class="category-1">item 5</li>
    <li class="category-1">item 6</li>
    <li class="category-2">item 7</li>
    <li class="category-2">item 8</li>
    <li class="category-2">item 9</li>
    <li class="category-2">item 10</li>
    <li class="category-2">item 11</li>
    <li class="category-2">item 12</li>
    <li class="category-1">item 13</li>
    <li class="category-1">item 14</li>
    <li class="category-2">item 15</li>
</ul>

<div id="pager"></div>
</div>

最佳答案

可以先隐藏所有li,然后显示$(visible)。另外,在分页功能中,只需在开头添加 $('#pager').html("") 即可,这样就不会重复数字。 不确定您要做什么,但您可能想更改类别的分页逻辑。

var visible = "";
var liToShow = $('li');
$('div.filter').delegate('a', 'click', function (event) {
  visible = '.' + this.href.slice(this.href.indexOf("#") + 1);
$('ul.items li').hide();
$(visible).show();
liToShow = $(visible);
pagination();
  event.preventDefault();
});

pageSize = 5;
var i = 1;
showPage = function(page) {
$("li").hide();
$("li").each(function(n) {
    if (n >= pageSize * (page - 1) && n < pageSize * page)
        $(this).show();
});        
}

showPage(i);

function pagination(action) {

var pages = Math.ceil(liToShow.length / pageSize);
$('#pager').html("");
for (var i = 0; i<pages; i++) {
   $('#pager').append('<a href="#" class="pageClick">'+(i+1)+'</a> &nbsp;');
}
$('.pageClick').on('click', function(e) {
   e.preventDefault();
   showPage($(this).index()+1);
});

}

pagination();
ul{list-style: none;}

#item-wrapper {
 width:250px;   
 margin:30px 0 0 30px;
}
.items li {
 font-family:arial;
font-size:13px;
 background-color:#ccc;
margin-bottom:1px; 
padding:5px;    
}
.ctrl-nav {
    background-color:#999;
    padding:5px;
    overflow:hidden;
}
.ctrl-nav a {
    font-family:arial;
font-size:13px;
    padding:5px 10px;
    color:#fff;
}
.ctrl-nav a#prev{
 float:left;   
}
.ctrl-nav a#next{
 float:right;   
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="filter">
    <a href="#category-1">category 1</a>
    <a href="#category-2">category 2</a>
</div>

<div id="item-wrapper">
<ul class="items">
    <li class="category-1">item 1</li>
    <li class="category-1">item 2</li>
    <li class="category-1">item 3</li>
    <li class="category-1">item 4</li>
    <li class="category-1">item 5</li>
    <li class="category-1">item 6</li>
    <li class="category-2">item 7</li>
    <li class="category-2">item 8</li>
    <li class="category-2">item 9</li>
    <li class="category-2">item 10</li>
    <li class="category-2">item 11</li>
    <li class="category-2">item 12</li>
    <li class="category-1">item 13</li>
    <li class="category-1">item 14</li>
    <li class="category-2">item 15</li>
</ul>

<div id="pager"></div>
</div>

关于javascript - 更改上一页和下一页以进行分页,具有过滤功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46294727/

相关文章:

javascript - 如何使用 jquery 将 css 类应用于某些元素?

javascript - JS 难于 document.getElements 并输出 HTML

javascript - 如何使用 HTML/JS 实现 'human' 日期范围选择下拉列表? (今天、昨天、上周……)

javascript - JQuery - 设置属性值

jquery - 如何创建与 m.facebook.com 风格相似的网页

javascript - 两个显示/隐藏切换(如果单击外部 div 则隐藏它们)问题

javascript - 如何将文本字段值从 jsp 传递到 spring Controller 类,反之亦然

javascript, Three.js - 如何补间相机的 FOV

javascript - 谷歌隐形验证码,wordpress,ajax,保存数据

JavaScript 变量未通过 getElementById() 获取 id 的值