(function($) { var zp = { init: function(obj, pageinit) { return (function() { zp.addhtml(obj, pageinit); zp.bindEvent(obj, pageinit); }()); }, addhtml: function(obj, pageinit) { return (function() { obj.empty(); if (pageinit.shownum < 5) { pageinit.shownum = 5; } if (pageinit.pageNum < pageinit.shownum) { pageinit.shownum = pageinit.pageNum; } var numshow = pageinit.shownum - 4; var numbefore = parseInt((pageinit.shownum - 5) / 2); if ((pageinit.shownum - 5) % 2 > 0) { var numafter = numbefore + 1; } else { var numafter = numbefore; } obj.append('共 ' + '' + pageinit.total + '' + ' 条数据 '); /*上一页*/ if (pageinit.current > 1) { obj.append('上一页'); } else { obj.remove('.prevPage'); obj.append('上一页'); } /*中间页*/ if (pageinit.current > 4 && pageinit.pageNum > pageinit.shownum) { obj.append('' + 1 + ''); obj.append('' + 2 + ''); obj.append('...'); } if (pageinit.current > 4 && pageinit.current < pageinit.pageNum - numshow && pageinit.pageNum > pageinit.shownum) { var start = pageinit.current - numbefore, end = pageinit.current + numafter; } else if (pageinit.current > 4 && pageinit.current >= pageinit.pageNum - numshow && pageinit.pageNum > pageinit.shownum) { var start = pageinit.pageNum - numshow, end = pageinit.pageNum; } else { if (pageinit.pageNum <= pageinit.shownum) { var start = 1, end = pageinit.shownum; } else { var start = 1, end = pageinit.shownum - 1; } } for (; start <= end; start++) { if (start <= pageinit.pageNum && start >= 1) { if (start == pageinit.current) { obj.append('' + start + ''); } else if (start == pageinit.current + 1) { obj.append('' + start + ''); } else { obj.append('' + start + ''); } } } if (end < pageinit.pageNum) { obj.append('...'); } /*下一页*/ if (pageinit.current >= pageinit.pageNum) { obj.remove('.nextbtn'); obj.append('下一页'); } else { obj.append('下一页'); } /*尾部*/ obj.append('' + '共' + '' + pageinit.pageNum + '' + '页' + ''); obj.append('' + '到第' + '' + '页' + ''); obj.append('' + '确定' + ''); }()); }, bindEvent: function(obj, pageinit) { return (function() { obj.off("click"); obj.on("click", "a.prebtn", function() { var cur = parseInt(obj.children("span.current").text()); var current = $.extend(pageinit, { "current": cur - 1 }); zp.addhtml(obj, current); if (typeof(pageinit.backfun) == "function") { pageinit.backfun(current); } }); obj.on("click", "a.zxfPagenum", function() { var cur = parseInt($(this).text()); var current = $.extend(pageinit, { "current": cur }); zp.addhtml(obj, current); if (typeof(pageinit.backfun) == "function") { pageinit.backfun(current); } }); obj.on("click", "a.nextbtn", function() { var cur = parseInt(obj.children("span.current").text()); var current = $.extend(pageinit, { "current": cur + 1 }); zp.addhtml(obj, current); if (typeof(pageinit.backfun) == "function") { pageinit.backfun(current); } }); obj.on("click", "span.zxfokbtn", function() { var cur = parseInt($("input.zxfinput").val()); var current = $.extend(pageinit, { "current": cur }); zp.addhtml(obj, current); if (typeof(pageinit.backfun) == "function") { pageinit.backfun(current); } }); obj.on("keydown", "input.zxfinput", function() { if (event.keyCode == "13") { $(".zxfokbtn").click(); } }); }()); } } $.fn.createPage = function(options) { var pageinit = $.extend({ pageNum: 10, current: 1, shownum: 9, activepage: "current", activepaf: "nextpage", backfun: function() {} }, options); zp.init(this, pageinit); } }(jQuery));