$.fn.pagelist = function (arg, methodname) { if (typeof methodname === "string" && $.trim(methodname) != "") { switch (methodname) { case 'refresh'://刷新当前页,一般用于删除或者更新后 $(this).each(function () { var arg = $(this).data('pagelistarg'); if (arg != null && typeof arg.clickcallback === "function") { arg.clickcallback(arg.currentpage); } }); break; } } else { var defaultsettings = { prevtext: 'prev',//显示的前一页文本 nexttext: 'next',//显示的下一页文本 showgolink: 'auto',//是否显示快速跳转,可能的值为auto 自动判断;true 永远显示;false 永不显示 goinputtype: 'select',//如何显示快速跳转输入,可能的值为select 下拉列表;text 输入框,默认值为select gotext: 'go',//显示的快速跳转文本 recordtext: '',//显示记录数,为空时不显示,否则按照占位符显示文本,{0}表示总页数,{1}表示总记录数 clickcallback: function (currentpage) { },//链接被点击时触发的事件,currentpage表示当前点击的是第几页,索引从1开始 readycallback: function (currentpage) { },//链接被点击时触发的事件,currentpage表示当前点击的是第几页,索引从1开始 renderpercall: true,//是否每次点击都重新绘制,如果每次clickcallback事件中都会重新绘制pagelist,此处请设置为false减少绘制消耗 pagesize: 10,//每页显示的数据条数 currentpage: 1,//当前第几页,索引从1开始 currentid:0, currentclassid:0, totalpage:1, totalcount: 0,//总记录数 currentpagecenter: true,//当前页是否居中,true表示居中,false表示按showpagerange倍率范围显示,注意此值会导致完全不同的显示方式 showpagerange: 5,//允许最小值3,当currentpagecenter设置为true时,表示去除第一页,最后一页后,还需显示的页面数量;为false时,表示在倍率范围内应当显示的页面链接数量, currenturl:'', }; arg = $.extend({}, defaultsettings, arg); // var totalpages = ~~(arg.totalcount / arg.pagesize) + (~~(arg.totalcount % arg.pagesize) == 0 ? 0 : 1);//获取总页数 var totalpages =arg.totalpage; if (arg.currentpage < 1) {//修正当前页页码为第一页 arg.currentpage = 1; } if (arg.currentpage > totalpages) {//修正当前页页码为最后一页 arg.currentpage = totalpages; } if (!(arg.showpagerange > 2)) { arg.showpagerange = 3; } $(this).data('pagelistarg', arg); $(this).each(function () { $(this).empty();//无数据 if (totalpages > 0) { var ul = $(''); var startpage = 2, endpage = totalpages - 1;//排除首页最后一页后显示的第一个超链接,最后一个超链接 var prevs = false, nexts = false;//是否需要显示…对应的超链接 if (arg.showpagerange + 4 < totalpages) {//因为页面链接最多包含arg.showpagerange + 4个,所以如果总页数大于时,才显示对应的… if (!arg.currentpagecenter) { var rangeidx = ~~(arg.currentpage / arg.showpagerange) + (~~(arg.currentpage % arg.showpagerange) == 0 ? 0 : 1); startpage = (rangeidx - 1) * arg.showpagerange + 1; endpage = rangeidx * arg.showpagerange; if (startpage < 2) { startpage = 2; }//修正 if (endpage >= totalpages) { endpage = totalpages - 1; }//修正 if (startpage >= endpage) { startpage = startpage - arg.showpagerange; }//修正 if (endpage == totalpages - 2) { endpage++; }//修正 prevs = startpage >= arg.showpagerange; nexts = endpage < totalpages - 1; } else { var prevreduce = ~~(arg.showpagerange / 2); var nextadd = prevreduce; if (~~(arg.showpagerange % 2) == 0) { prevreduce--;//showpagerange为偶数时,currentpage前面显示的页码链接数比后面显示的链接数少一个 } if (prevreduce < 0) {//修正当showpagerange被设置为1导致的负数 prevreduce = 0; } startpage = parseint(arg.currentpage) - parseint(prevreduce); if (startpage < 2) { startpage = 2; }//修正startpage endpage = parseint(arg.currentpage) + parseint(nextadd); if (endpage - startpage < arg.showpagerange) { endpage = startpage + arg.showpagerange - 1; }//根据startpage修正endpage if (endpage > totalpages - 1) { endpage = totalpages - 1; startpage = endpage - arg.showpagerange + 1; }//修正endpage,并同步修正startpage if (startpage <= 3) {//再次修正startpage startpage = 2; } if (endpage > totalpages - 3) {//再次修正endpage endpage = totalpages - 1; } prevs = startpage - 1 > 1; nexts = endpage + 1 < totalpages; } } if(arg.currentpage > 1){ var li = renderdoms(arg.prevtext, arg.currentpage == 1, false, arg.currentpage - 1, arg);//前一页 }else{ var li = renderdoms(arg.prevtext, arg.currentpage == 1, false, arg.currentpage, arg);//前一页 } li.addclass("prev"); ul.append(li); ul.append(renderdoms("1", arg.currentpage == 1, arg.currentpage == 1, 1, arg));//第一页 if (prevs) { ul.append(renderdoms('…', false, false, startpage - 1, arg));//…页 } for (var i = startpage; i <= endpage; i++) { ul.append(renderdoms(i, arg.currentpage == i, arg.currentpage == i, i, arg));//第i页 } if (nexts) { ul.append(renderdoms('…', false, false, parseint(endpage) + parseint(1), arg));//…页 } if (totalpages > 1) { ul.append(renderdoms(totalpages, arg.currentpage == totalpages, arg.currentpage == totalpages, totalpages, arg));//最后一页 } if(arg.currentpage == totalpages){ li = renderdoms(arg.nexttext, arg.currentpage == totalpages, false, parseint(arg.currentpage), arg);//下一页 }else{ li = renderdoms(arg.nexttext, arg.currentpage == totalpages, false, parseint(arg.currentpage) + 1, arg);//下一页 } li.addclass("next"); ul.append(li); var showgo; switch ((arg.showgolink + '').tolowercase()) { case "true": showgo = true; break; case "false": showgo = false; break; default: showgo = arg.showpagerange + 4 < totalpages; break; } if (showgo) { li = $('
  • ' + arg.gotext + '
  • '); var sel; if (arg.goinputtype.tolowercase() != 'text') { sel = $('');// for (var i = 1; i <= totalpages; i++) { sel.append(''); } sel.val(arg.currentpage); } else { sel = $(''); sel.focus(function () { $(this).val(''); }).change(function () { var num = parseint($(this).val()); var a =$(this); console.log(a) console.log(num) if (num && num > 0) { if (num > totalpages) { num = totalpages; } $(this).val(num); } else { $(this).val(''); } }).keyup(function () { $(this).change(); }); } var sp = li.find('span'); sel.insertbefore(sp); sp.click(function () { var pagenumber = ~~$(this).parent().find('.go:eq(0)').val(); if (pagenumber > 0) { clickevent($(this).parent(), arg, pagenumber); } }); // ul.append(li); } if (typeof arg.recordtext === "string" && $.trim(arg.recordtext) != "") { ul.append('
  • ' + arg.recordtext.replace(/\{0\}/g, totalpages).replace(/\{1\}/g, arg.totalcount) + '
  • '); } $(this).append(ul); } }); } // href="/case/list/0-0-'+pagenumber+'.html" function renderdoms(text, disable, active, pagenumber, arg) { var li = $('
  • ' + text + '
  • '); if (active) { li.addclass("active"); $(document).ready(function() { if (typeof arg.readycallback === "function") { arg.readycallback(pagenumber); } // console.log(pagenumber) if (arg.renderpercall) { arg.currentpage = pagenumber; var a = $('active').parent().parent().pagelist(arg); // console.log(a) } }); } if (disable) { li.addclass("disable"); } else { li.click(function () { clickevent(this, arg, pagenumber); }); } return li; } function clickevent(dom, arg, pagenumber) { if (typeof arg.clickcallback === "function") { arg.clickcallback(pagenumber); } if (arg.renderpercall) { arg.currentpage = pagenumber; var b =$(dom).parent().parent().pagelist(arg); } } };