/** * 分页插件 * 使用方法: * 初始化 * $('#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 += ''; 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);