;(function ($, window, document, undefined) {
'use strict';
function paging(element, options) {
this.element = element;
options = this.initoption(options);
this.options = {
pagenum: options.pagenum || 1, // 当前页码
pages: options.pages, // 总页码
total: options.total, // 数据总记录
callback: options.callback // 回调函数
};
this.init();
}
paging.prototype = {
constructor: paging,
init: function () {
this.createhtml();
this.bindevent();
},
initoption:function(options){
var element = this.element;
// 当前页码
if(element.data("pagenum")){
options.pagenum = element.data("pagenum");
}
// 总页码
if(element.data("pages")){
options.pages = element.data("pages");
}
// 数据总记录
if(element.data("total")){
options.total = element.data("total");
}
// 回调函数
if(element.data("callback")){
options.callback = element.data("callback");
}
return options;
},
createhtml: function () {
var me = this;
var content = [];
var pagenum = me.options.pagenum;
var pages = me.options.pages;
var total = me.options.total;
//content.push("");
if (pagenum <= 1) {
content.push("");
}
else{
content.push("");
}
// 总页数大于6必显示省略号
if (pages > 6) {
// 1、当前页码小于5且总页码大于6 省略号显示后面+总页码
if (pagenum < 5) {
// 1与6主要看要显示多少个按钮 目前都显示5个
for (var i = 1; i < 6; i++) {
if (pagenum !== i) {
content.push("");
} else {
content.push("");
}
}
content.push(". . .");
content.push("");
} else {
// 2、当前页码接近后面 到最后页码隔3个 省略号显示后面+总页面
if (pagenum < pages - 3) {
for (var i = pagenum - 2; i < pagenum + 3; i++) {
if (pagenum !== i) {
content.push("");
} else {
content.push("");
}
}
content.push(". . .");
content.push("");
} else {
// 3、页码至少在5,最多在【pages - 3】的中间位置 第一页+省略号显示前面
content.push("");
content.push(". . .");
for (var i = pages - 4; i < pages + 1; i++) {
if (pagenum !== i) {
content.push("");
} else {
content.push("");
}
}
}
}
} else {
// 总页数小于6
for (var i = 1; i < pages + 1; i++) {
if (pagenum !== i) {
content.push("");
} else {
content.push("");
}
}
}
if (pagenum >= pages) {
content.push("");
}
else{
content.push("");
}
content.push(" 共 " + pages + " 页 ");
content.push(" 共 " + total + " 条记录 ");
me.element.html(content.join(''));
},
bindevent: function () {
var me = this;
me.element.off('click', 'button');
// 委托新生成的dom监听事件
me.element.on('click', 'button:not(.current)', function () {
var id = $(this).data('id');
var num = parseint($(this).html());
var pagenum = me.options.pagenum;
if (id === 'prepage') {
if (pagenum !== 1) {
me.options.pagenum -= 1;
}
} else if (id === 'nextpage') {
if (pagenum !== me.options.pages) {
me.options.pagenum += 1;
}
} else if (id === 'firstpage') {
if (pagenum !== 1) {
me.options.pagenum = 1;
}
} else if (id === 'lastpage') {
if (pagenum !== me.options.pages) {
me.options.pagenum = me.options.pages;
}
} else {
me.options.pagenum = num;
}
me.createhtml();
if (me.options.callback) {
me.options.callback(me.options.pagenum);
}
});
}
};
$.fn.pagingnew = function (options) {
return new paging($(this), options);
}
})(jquery, window, document);