【发布时间】:2016-10-13 11:35:04
【问题描述】:
我正在开发一个 jQuery 表格分页。这个想法是在表格有很多行时显示分页。
我已设法显示所有分页链接,包括上一个和下一个链接,但我还希望 ellipsis(...) 显示并缩短分页链接,如下所示。
这里有一个简单的例子来说明清楚。这就是我现在拥有的:
页数:1 2 3 4 [5] 6 7 8 9 10 11
这就是我想要实现的目标:
页数:... 4 [5] 6 ...
PS:代码应该使用引导样式。请帮忙。
代码:
$.fn.pageMe = function(opts){
var $this = this,
defaults = {
perPage: 7,
showPrevNext: false,
hidePageNumbers: false
},
settings = $.extend(defaults, opts);
var listElement = $this;
var perPage = settings.perPage;
var children = listElement.children();
var pager = $('.pager');
if (typeof settings.childSelector!="undefined") {
children = listElement.find(settings.childSelector);
}
if (typeof settings.pagerSelector!="undefined") {
pager = $(settings.pagerSelector);
}
var numItems = children.size();
var numPages = Math.ceil(numItems/perPage);
pager.data("curr",0);
if (settings.showPrevNext){
$('<li><a href="#" class="prev_link">«</a></li>').appendTo(pager);
}
var curr = 0;
while(numPages > curr && (settings.hidePageNumbers==false)){
$('<li><a href="#" class="page_link">'+(curr+1)+'</a></li>').appendTo(pager);
curr++;
}
if (settings.showPrevNext){
$('<li><a href="#" class="next_link">»</a></li>').appendTo(pager);
}
pager.find('.page_link:first').addClass('active');
pager.find('.prev_link').hide();
if (numPages<=1) {
pager.find('.next_link').hide();
}
pager.children().eq(1).addClass("active");
children.hide();
children.slice(0, perPage).show();
pager.find('li .page_link').click(function(){
var clickedPage = $(this).html().valueOf()-1;
goTo(clickedPage,perPage);
return false;
});
pager.find('li .prev_link').click(function(){
previous();
return false;
});
pager.find('li .next_link').click(function(){
next();
return false;
});
function previous(){
var goToPage = parseInt(pager.data("curr")) - 1;
goTo(goToPage);
}
function next(){
goToPage = parseInt(pager.data("curr")) + 1;
goTo(goToPage);
}
function goTo(page){
var startAt = page * perPage,
endOn = startAt + perPage;
children.css('display','none').slice(startAt, endOn).show();
if (page>=1) {
pager.find('.prev_link').show();
}
else {
pager.find('.prev_link').hide();
}
if (page<(numPages-1)) {
pager.find('.next_link').show();
}
else {
pager.find('.next_link').hide();
}
pager.data("curr",page);
pager.children().removeClass("active");
pager.children().eq(page+1).addClass("active");
}
};
$(document).ready(function(){
$('#myTable').pageMe({pagerSelector:'#myPager',showPrevNext:true,hidePageNumbers:false,perPage:4});
});
<link rel="stylesheet" type="text/css" href="http://getbootstrap.com/1.4.0/assets/css/bootstrap.css">
<div class="container">
<div class="row">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>#</th>
<th>Table heading</th>
<th>Table heading</th>
</tr>
</thead>
<tbody id="myTable">
<tr>
<td>1</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr>
<td>2</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr>
<td>3</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr>
<td>4</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr class="success">
<td>5</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr>
<td>6</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr>
<td>7</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr>
<td>8</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr>
<td>9</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr>
<td>10</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr>
<td>11</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr>
<td>12</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr>
<td>13</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr>
<td>14</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr>
<td>15</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr>
<td>16</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr>
<td>17</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr>
<td>18</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr>
<td>19</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr>
<td>20</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
<tr>
<td>21</td>
<td>Table cell</td>
<td>Table cell</td>
</tr>
</tbody>
</table>
</div>
<div class="col-md-12 text-center">
<ul class="pagination pagination-lg pager" id="myPager"></ul>
</div>
</div>
</div>
我尝试修改这个函数但没有结果
var curr = 0;
while(numPages > curr && (settings.hidePageNumbers==false)){
$('<li><a href="#" class="page_link">'+(curr+1)+'</a></li>').appendTo(pager);
curr++;
}
【问题讨论】:
-
分页对你有用吗?因为在
var numItems = children.size();中没有称为size()的函数,所以应该是var numItems = children.length; -
@NikhilNanjappa 问题不在分页中,它的工作没有任何问题。 ||数量上的问题(分页)他们给了我所有的页面,但我想从
Pages : 1 - 2 - 3 - [4] - 5 - 6 - 7 - 8缩短它就像这样Pages : ... - 3 - [4] - 5 ...,一个小例子 -
你正在努力..
-
@NikhilNanjappa 谢谢,因为我尝试了很多来找到结果,但没有任何结果
-
@NikhilNanjappa 任何解决方案?我试图修复它一整天都没有结果
标签: javascript jquery html twitter-bootstrap pagination