building-sign/public/static/js/xlPaging.js

162 lines
6.8 KiB
JavaScript
Executable File
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

;(function ($, window, document, undefined) {
'use strict';
function Paging(element, options) {
this.element = element;
this.options = {
nowPage: options.nowPage || 1, // 当前页码
pageNum: options.pageNum, // 总页码
canJump: options.canJump || 0, // 是否能跳转。0=不显示默认1=显示
showOne: options.showOne || 1,//只有一页时是否显示。0=不显示,1=显示(默认)
buttonNum: (options.buttonNum>=5?options.buttonNum:5) || 7,// 页面显示页码数量
callback: options.callback // 回调函数
};
this.init();
}
Paging.prototype = {
constructor : Paging,
init : function() {
this.createHtml();
this.bindClickEvent();
this.disabled();
},
createHtml : function(){
var me = this;
var nowPage = this.options.nowPage;
var pageNum = this.options.pageNum;
var buttonNum = this.options.buttonNum;
var canJump = this.options.canJump;
var showOne = this.options.showOne;
var content = [];
//对nowPage进行判断
nowPage = nowPage > pageNum ? pageNum : nowPage;
nowPage = nowPage < 1 ? 1 : nowPage;
//如果只有一页并且设置为不显示,则不进行渲染
if(showOne && pageNum === 1){
//return '';
}
content.push("<ul>");
content.push("<li class='xl-prevPage'>上一页</li>");
//页面总数小于等于当前要展示页数总数,展示所有页面
if(pageNum <= buttonNum){
for(var i=1; i<=pageNum; i++){
if (nowPage !== i) {
content.push("<li>"+i+"</li>");
} else {
content.push("<li class='xl-active'>"+i+"</li>");
}
}
}else if(nowPage <= Math.floor(buttonNum / 2)){
//当前页面小于等于展示页数总数的一半向下取整从1开始
for(var i=1;i<= buttonNum-2;i++){
if (nowPage !== i) {
content.push("<li>"+i+"</li>");
} else {
content.push("<li class='xl-active'>"+i+"</li>");
}
}
content.push("<li class='xl-disabled'>...</li>");
content.push("<li>" + pageNum + "</li>");
}else if(pageNum - nowPage <= Math.floor(buttonNum / 2)){
//当前页面大于展示页数总数的一半(向下取整)
content.push("<li>"+1+"</li>");
content.push("<li class='xl-disabled'>...</li>");
for(var i=pageNum-buttonNum+3; i<=pageNum; i++){
if (nowPage !== i) {
content.push("<li>"+i+"</li>");
} else {
content.push("<li class='xl-active'>"+i+"</li>");
}
}
}else{
//前半部分页码
if(nowPage - Math.floor(buttonNum / 2) <= 0){
for(var i=1;i<= Math.floor(buttonNum / 2);i++){
if (nowPage !== i) {
content.push("<li>"+i+"</li>");
} else {
content.push("<li class='xl-active'>"+i+"</li>");
}
}
}else{
content.push("<li>"+1+"</li>");
content.push("<li class='xl-disabled'>...</li>");
for(var i=nowPage-Math.floor(buttonNum / 2)+(buttonNum % 2 == 0 ? 3: 2); i<=nowPage; i++){
if (nowPage !== i) {
content.push("<li>"+i+"</li>");
} else {
content.push("<li class='xl-active'>"+i+"</li>");
}
}
}
//后半部分页码
if(pageNum - nowPage <= 0){
for(var i=nowPage+1;i<=pageNum;i++){
content.push("<li>" + i + "</li>");
}
}else{
for(var i=nowPage+1; i<=nowPage+Math.floor(buttonNum / 2)-2; i++){
content.push("<li>"+i+"</li>");
}
content.push("<li class='xl-disabled'>...</li>");
content.push("<li>" + pageNum + "</li>");
}
}
content.push("<li class='xl-nextPage'>下一页</li>");
if(canJump){
content.push("<li class='xl-jumpText xl-disabled'>跳转到<input type='number' id='xlJumpNum'>页</li>");
content.push("<li class='xl-jumpButton'>确定</li>");
}
content.push("</ul>");
me.element.html(content.join(''));
// DOM重新生成后每次调用是否禁用button
setTimeout(function () {
me.disabled();
}, 20);
},
bindClickEvent: function(){
var me = this;
me.element.off('click', 'li');
me.element.on('click', 'li', function () {
var cla = $(this).attr('class');
var num = parseInt($(this).html());
var nowPage = me.options.nowPage;
if( $(this).hasClass('xl-disabled') || cla === 'xl-jumpText'){
return '';
}
if (cla === 'xl-prevPage') {
if (nowPage !== 1) {
me.options.nowPage -= 1;
}
} else if (cla === 'xl-nextPage') {
if (nowPage !== me.options.pageNum) {
me.options.nowPage += 1;
}
}else if(cla === 'xl-jumpButton'){
me.options.nowPage = Number($('#xlJumpNum').val());
}else{
me.options.nowPage = num;
}
me.createHtml();
if (me.options.callback) {
me.options.callback(me.options.nowPage);
}
});
},
disabled: function () {
var me = this;
var nowPage = me.options.nowPage;
var pageNum = me.options.pageNum;
if (nowPage === 1) {
me.element.children().children('.xl-prevPage').addClass('xl-disabled');
} else if (nowPage === pageNum) {
me.element.children().children('.xl-nextPage').addClass('xl-disabled');
}
}
}
$.fn.paging = function (options) {
return new Paging($(this), options);
}
})(jQuery, window, document);