/**
* 分页插件
* 使用方法:
* 初始化
* $('#pagination').page({
* totalpage:100, //总页数
* onchange:function (page) { //callback
* console.log(page)
* }
* })
* 修改总页数
* $('#pagination').changetotalpage(50) number
*/
(function ($) {
var defaults = {
totalpage: 10,
current: 1,
onchange: function () {
}
};
var opts, myoptions;
$.fn.extend({
page: function (options) {
myoptions = options;
opts = $.extend(defaults, options);
var $this = $(this);
return this.each(function () {
var self = $(this);
var page = '';
var plength = opts.totalpage;
var nowpage = opts.current;
if (plength > 0 && plength <= 8) {
for (var i = 1; i <= plength; i++) {
page += '
' + i + '';
}
} else {
if (nowpage <= 3) {
for (var i = 1; i <= 5; i++) {
page += '' + i + '';
}
if (nowpage + 5 >= plength) {
page += '...';
} else {
page += '...';
}
page += '' + plength + '';
} else if (nowpage == 4) {
for (var i = 1; i <= 6; i++) {
page += '' + i + '';
}
if (nowpage + 5 >= plength) {
page += '...';
} else {
page += '...';
}
page += '' + plength + '';
} else if (nowpage >= plength - 3) {
page += '1';
if (nowpage - 5 <= 0) {
page += '...';
} else {
page += '...';
}
for (var i = plength - 4; i <= plength; i++) {
page += '' + i + '';
}
}
else {
page += '1';
if (nowpage - 5 <= 0) {
page += '...';
} else {
page += '...';
}
for (var i = nowpage - 2; i <= nowpage + 2; i++) {
page += '' + i + '';
}
if (nowpage + 5 >= plength) {
page += '...';
} else {
page += '...';
}
page += '' + plength + '';
}
}
self.html('');
self.unbind();
var pagehtml = '';
pagehtml += '- first
';
if (nowpage - 1 <= 0) {
pagehtml += '- pre
'
} else {
pagehtml += '- pre
'
}
pagehtml += page;
if (nowpage + 1 >= plength) {
pagehtml += '- next
';
} else {
pagehtml += '- next
';
}
pagehtml += '- last
';
self.html(pagehtml);
self.find('.page' + nowpage).addclass('active').siblings().removeclass('active');
self.on('click', 'li', function () {
var pageno = $(this).data('no');
if (nowpage === pageno) {
return false;
}
myoptions.current = pageno;
opts.onchange(pageno);
$this.page(myoptions)
})
})
},
changetotalpage: function (number) {
myoptions.totalpage = number;
myoptions.current = 1;
$(this).page(myoptions);
}
})
})(jquery);