【发布时间】:2018-04-24 20:30:18
【问题描述】:
我正在为我的项目使用刀片分页。
分页工作正常。
现在我想做个喜欢,
- 数据页应该从0,1,2,3...开始,标签应该 从1,2,3,4...开始
jQuery 脚本
$.fn.bladePagination = function(options) {
if(typeof(options) === 'object' || typeof(options) === 'undefined') {
var settings = $.extend({}, $.fn.bladePagination.defaults, options);
return this.each(function() {
var jqPagination = $(this);
if(jqPagination.hasClass('slice-pagination')) {
createPagination(jqPagination, settings);
initPageClick(jqPagination, settings);
}
});
}
};
/*==============================================
* default options
*==============================================
*/
$.fn.bladePagination.defaults = {
maxPageNum: 5,
firstLabel: '|<', // |<
prevLabel: '<', // <
nextLabel: '>', // >
lastLabel: '>|', // >|
moreLabel: '...',
rebuildAfterClick: false,
clickPage: function(page, jqPagination) {}
};
/*==============================================
* private functions
*==============================================
*/
var createPagination = function(jqPagination, settings) {
var currPage = Number(jqPagination.attr('data-current'));
var totalPage = Number(jqPagination.attr('data-total'));
var pageShowArray = new Array();
//first page number changed into zero
pageShowArray.push({
type: 'page first' + ((1 == currPage) ? ' disabled' : '')
, page: 1
, show: settings.firstLabel
});
//previous page
pageShowArray.push({
type: 'page prev' + ((1 == currPage) ? ' disabled' : '')
, page: (currPage <= 1) ? 1 : (currPage - 1)
, show: settings.prevLabel
});
//page number
var pageNumArray = new Array();
var leftPageNum = (settings.maxPageNum - 1) / 2;
var rightPageNum = settings.maxPageNum - 1 - leftPageNum;
if(currPage - leftPageNum < 1) {
for(var i = leftPageNum; i > 0; i --) {
var page = currPage - i;
if(page < 1) {
rightPageNum ++;
} else {
pageNumArray.push(page);
}
}
pageNumArray.push(currPage);
for(var i = 1; i <= rightPageNum; i ++) {
var page = currPage + i;
if(page > totalPage) break;
pageNumArray.push(page);
}
} else {
for(var i = rightPageNum; i > 0; i --) {
var page = currPage + i;
if(page > totalPage) {
leftPageNum ++;
} else {
pageNumArray.unshift(page);
}
}
pageNumArray.unshift(currPage);
for(var i = 1; i <= leftPageNum; i ++) {
var page = currPage - i;
if(page < 1) break;
pageNumArray.unshift(page);
}
}
if(pageNumArray[0] > 1) {
pageShowArray.push({
type: 'more'
, page: -1
, show: settings.moreLabel
});
}
for(var i = 0; i < pageNumArray.length; i ++) {
var pageNum = pageNumArray[i];
pageShowArray.push({
type: 'page' + ((pageNum == currPage) ? ' active' : '')
, page: pageNum
, show: pageNum
});
}
if(pageNumArray[pageNumArray.length - 1] < totalPage) {
pageShowArray.push({
type: 'more'
, page: -1
, show: settings.moreLabel
});
}
//next page
pageShowArray.push({
type: 'page next' + ((totalPage == currPage) ? ' disabled' : '')
, page: (currPage >= totalPage) ? totalPage : (currPage + 1)
, show: settings.nextLabel
});
//last page
pageShowArray.push({
type: 'page last' + ((totalPage == currPage) ? ' disabled' : '')
, page: totalPage
, show: settings.lastLabel
});
//create page
jqPagination.empty();
for(var i = 0; i < pageShowArray.length; i ++) {
var pageShow = pageShowArray[i];
var html = '<li class="' + pageShow.type + '" data-page="' + pageShow.page + '">' + pageShow.show + '</li>';
jqPagination.append(html);
}
}
var initPageClick = function(jqPagination, settings) {
var jqPageSet = jqPagination.find('li.page');
//event handler
jqPageSet.off('click');
jqPageSet.click(function() {
var jqPage = $(this);
if(! (jqPage.hasClass('active') || jqPage.hasClass('disabled'))) {
var page = jqPage.data('page');
settings.clickPage(page, jqPagination);
if(settings.rebuildAfterClick) {
//rebuild
createPagination(jqPagination, settings);
initPageClick(jqPagination, settings);
}
}
});
}
我想在这里改变一些东西
var html = '<li class="' + pageShow.type + '" data-page="' + pageShow.page + '">' + pageShow.show + '</li>';
我正在使用其他一些库来获取图像,图像值从 0 开始,在那个库中我无法进行更改。
我希望像下面这样开始
<li data-page='0'>1</li>
<li data-page='1'>2</li>
<li data-page='2'>3</li>
【问题讨论】:
-
假设
pageShow.show实际上是向用户显示页码,为什么不使用pageShow.show + 1? -
@Scaramouche 它应该开始
- 1
-
所以,这正是我建议的,注意只给
pageShow.show加1,而不是pageShow.page,明白了吗? -
@Scaramouche 已经从 '1' 开始 'pageShow.page' 和 "pageShow.show" 。现在我想要的是 'pageShow.show' 应该从 '1' 和 'pageShow.page' 开始应该从'0'开始
-
好吧,也许我理解错了,我以为他们从0开始,如果他们从1开始,从
pageShow.show中减去1,看,应该是这样的:var html = '<li class="' + pageShow.type + '" data-page="' + (pageShow.page-1) + '">' + pageShow.show + '</li>';
标签: javascript jquery pagination