js分页插件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
//page(JSON对象);所有属性见代码中ops
define(function (require, exports, module) {
module.exports= function(os){
//可用配置属性
var ops = {
total:0 //记录数
, page:0 //当前页
, count:0 //或当前记录数
, side:5 //当前页左右数字页个数
, per:5 //每页条数
//模板的值非''才显示,占位符有{=page},{=maxPage},{=total},{=currentPage}
, firstTPL:'首页' //首页模板
, lastTPL:'末页' //末页模板
, prevTPL:'上页' //上页模板
, nextTPL:'下页' //下页模板
, prevSideTPL:'<<' //前组模板(快退)
, nextSideTPL:'>>' //后组模板(快进)
, numberTPL:'{=page}' //页码形式模板
, pageTPL:'{=page}' //当前页码模板
, jumpTPL:'' //跳转form
};
for (var o in ops)
o in os && (ops[o]=os[o]);
function parseTPL(tpl,json) {
if (!tpl)
return '';
json.maxPage = ops.maxp;
json.total = ops.total;
json.currentPage = ops.page;
return String(tpl).replace(/\{\=(\w+)\}/g,function($0,$1){
return json[$1]||'';
});
}
var pages = '';
(!+ops.per || ops.per < 1) && (ops.per = 5);
if (!+ops.total || ops.total <= ops.per )
return pages;//只有一页
ops.maxp = Math.ceil(ops.total/ops.per);//最大页
//得到当前页码与偏移
if (ops.count > 0) {//使用条数方式
ops.count > ops.total && (ops.count = ops.total);
ops.page = Math.ceil(ops.count/ops.per);//数据位移转换成页,余+1
} else if (ops.page > 1){//页码式
ops.page > ops.maxp && (ops.page = ops.maxp);
ops.count = ops.page*ops.per;
} else {
ops.count = 0;
ops.page = 1;
}
ops.nums = ops.side*2+1;//总数字页为*2+1
console.log(ops);
//首页/上页,左边页面码,page>side出现
if (ops.page > ops.side+1)
pages += parseTPL(ops.firstTPL,{page:1})
+ parseTPL(ops.prevTPL,{page:ops.page-1});
//快退:
var prevp = ops.page - ops.nums;
if (prevp > 1 )
pages += parseTPL(ops.prevSideTPL,{page:prevp});
//中间左边/右边的页码
for (var fi = ops.side, sidel=sider='',pl=pr=ops.page;fi >0; fi--) {
//左边页面码
if (--pl >= 1)
sidel = parseTPL(ops.numberTPL,{page:pl}) + sidel;
//右边页码
if (++pr <= ops.maxp)
sider += parseTPL(ops.numberTPL,{page:pr});
}
pages += sidel
+ parseTPL(ops.pageTPL,{page:ops.page})
+ sider;
//快进按钮
var nextp = ops.page + ops.nums;
if (ops.maxp > nextp )
pages += parseTPL(ops.nextSideTPL,nextp);
//最后的按钮
if (ops.maxp- ops.page > ops.side)
pages += parseTPL(ops.nextTPL,{page:ops.page+1})
+parseTPL(stTPL,{page:ops.maxp});
//跳转
if (ops.page > ops.
side || ops.maxp-ops.page >ops.side)
pages += parseTPL(ops.jumpTPL,{page:ops.page});
return pages;
}
});