js分页插件:首页,上页,快退,页码,快进,下页末页,跳转,使用模板,灵活自由
2013-08-31 10:32
603 查看
//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:'<a href="?{=page}">首页</a>' //首页模板 , lastTPL:'<a href="?{=page}">末页</a>' //末页模板 , prevTPL:'<a href="?{=page}">上页</a>' //上页模板 , nextTPL:'<a href="?{=page}">下页</a>' //下页模板 , prevSideTPL:'<a href="?{=page}"><<</a>' //前组模板(快退) , nextSideTPL:'<a href="?{=page}">>></a>' //后组模板(快进) , numberTPL:'<a href="?{=page}">{=page}</a>' //页码形式模板 , pageTPL:'<a href="#{=page}">{=page}</a>' //当前页码模板 , 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(ops.lastTPL,{page:ops.maxp}); //跳转 if (ops.page > ops.side || ops.maxp-ops.page >ops.side) pages += parseTPL(ops.jumpTPL,{page:ops.page}); return pages; } });
使用方法
seajs见seajs.org
或者改写成普通的插件
seajs.use('chrd/page/1.0/page.js#?kdkddddddgdkk',function(p){page = p({total:1000,page:25});console.log(page);})
Object {total: 1000, page: 25, count: 125, side: 5, per: 5…}
page.js:55
<a href="?1">首页</a><a href="?24">上页</a><a href="?14"><<</a><a href="?20">20</a><a href="?21">21</a><a href="?22">22</a><a href="?23">23</a><a href="?24">24</a><a
href="#25">25</a><a href="?26">26</a><a href="?27">27</a><a href="?28">28</a><a href="?29">29</a><a href="?30">30</a><a href="?">>></a><a href="?26">下页</a><a href="?200">末页</a>
相关文章推荐
- 使用JQuery.js插件产生的页面分享带来的不跳转到首页
- 【js】pagination分页(支持首页,末页,跳转)
- 【js】jQuery Pagination分页插件( 添加支持 首页,末页)
- jquery.paginate.js 分页插件的使用
- laypage.js分页插件使用总结
- 使用PDF.js在网页显示pdf文件并跳转到指定页码
- 浅析使用BootStrap TreeView插件实现灵活配置快递模板
- MVC如何使用开源分页插件shenniu.pager.js
- [原创]jPagerBar1.2发布-jquery分页插件(一个适合Ajax+JSON+jQuery环境使用的多功能页码栏插件)(Demo、源文件下载已更新)
- Jquery 模板插件 jquery.tmpl.js 的使用方法(1):基本语法,绑定,each循环,ajax获取json数据
- jQuery DataTables插件分页允许输入页码跳转
- MVC如何使用开源分页插件shenniu.pager.js
- [js高手之路]Node.js模板引擎教程-jade速学与实战4-模板引用,继承,插件使用
- 详解MVC如何使用开源分页插件(shenniu.pager.js)
- Jquery.Page.js 分页插件的使用
- MyBatis分页插件:比PageHelper都要简单,使用很灵活,目前支持Oracle和MySQL
- Js分页插件,支持页面跳转
- 关于MVC中使用JqGrid插件分页时无法显示分页按钮(首页、上一页、下一页、最后一页)的原因
- vue.js中使用vue-bootstrap-pagination 分页插件的问题