;(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);