【发布时间】:2016-02-19 04:49:40
【问题描述】:
我使用 tablesorter 对表格进行排序。我使用分页脚本来添加分页。
分页脚本:
$.fn.tablePager = function(opts) {
var $this = this,
defaults = {
pagerSelector: "#tablePager",
perPage: 10,
showPrevNext: true,
numbersPerPage: 5,
hidePageNumbers: false
},
settings = $.extend(defaults, opts);
var listElement = $this;
var perPage = settings.perPage;
var children = listElement.children();
var pager = $(settings.pagerSelector);
if (typeof settings.childSelector != "undefined") {
children = listElement.find(settings.childSelector);
}
if (typeof settings.pagerSelector != "undefined") {
pager = $("#tablePager");
}
var numItems = children.size();
var numPages = Math.ceil(numItems / perPage);
pager.data("curr", 0);
if (settings.showPrevNext) {
$('<li><a href="#" class="prev_link">« Prev</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.numbersPerPage > 1) {
$('.page_link').hide();
$('.page_link').slice(pager.data("curr"), settings.numbersPerPage).show();
}
if (settings.showPrevNext) {
$('<li><a href="#" class="next_link">Next »</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() {
var 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);
if (settings.numbersPerPage > 1) {
$('.page_link').hide();
$('.page_link').slice(page, settings.numbersPerPage + page).show();
}
pager.children().removeClass("active");
pager.children().eq(page + 1).addClass("active");
}
};
Javascript:
<script>
$.tablesorter.themes.bootstrap = {
table: 'table table-striped',
hover: '', // custom css required - a defined bootstrap style may not override other classes
iconSortNone: 'fa fa-sort', // class name added to icon when column is not sorted
iconSortAsc: 'fa fa-sort-asc', // class name added to icon when column has ascending sort
iconSortDesc: 'fa fa-sort-desc' // class name added to icon when column has descending sort
};
$("table").tablesorter({
theme: 'bootstrap', // theme "jui" and "bootstrap" override the uitheme widget option in v2.7+
headerTemplate: '{content} {icon}', // needed to add icon for jui theme
widgets: ['uitheme'],
});
$('#pagedTable').tablePager();
</script>
HTML:
<table class="table table-striped">
<thead>
<tr><th></th></tr>
</thead>
<tbody id="pagedTable">
<tr>
<td></td>
</tr>
</tbody>
</table>
<a class="pagination" id="tablePager"></a>
我不使用默认的 tablesorter 分页,因为我不能让它像 bootstrap 的那样设置样式。
如何排序所有表格但不排序一页? 谢谢!
【问题讨论】:
-
您正在使用冲突的插件。您的寻呼机正在对数据进行切片
-
是的,但是这个jsfiddle.net/abkNM/3500 版本也有切片功能。
-
所以使用该示例并按照您需要的方式设置样式。您正在使用的另一个插件不知道 tablesorter 中进行的内部排序
-
那个样本不符合我的需要。我将更改寻呼机以正确排序。
-
寻呼机只是隐藏元素。 Tablesorter 的工作方式与此不同
标签: jquery sorting pagination tablesorter