pagination分页插件

最近做了个项目,有用到分页, 这类插件应该是很常用的, 虽然网上很多现成的分页插件, 但是还是想着自己写一个, 给自己积累点东西, 顺便练练手,
写了差不多3个小时左右, 代码如下:

代码:


  1 <!DOCTYPE HTML>
2 <html lang="en">
3 <head>
4 <meta charset="UTF-8">
5 <title>分页插件</title>
6 <style type="text/css">
7 body{padding: 0px; margin: 0px;}
8 .content{width: 980px; margin: 0 auto; padding-top: 50px;}
9 ul{margin:0px; padding:0px;}
10 ul li{margin:0px; padding:0px; list-style:none; float:left;}
11 </style>
12 </head>
13 <body>
14 <div class="content">
15 <p>当前页: <input type="text" id="txtPageIndex" /></p>
16 <p>总页数: <input type="text" id="txtPageCount" /></p>
17 <p><button id="btnSubmit">submit</button></p>
18 <br />
19 <br />
20
21 <p>输出:</p>
22 <div id="pageBox">
23
24 </div>
25 </div>
26
27 <script type="text/javascript">
28 function byID(id){
29 return document.getElementById(id);
30 }
31
32 var ui = {};
33 ui.btnSubmit = byID(‘btnSubmit‘);
34 ui.txtPageIndex = byID(‘txtPageIndex‘);
35 ui.txtPageCount = byID(‘txtPageCount‘);
36 ui.pageBox = byID(‘pageBox‘);
37
38 ui.btnSubmit.onclick = function(){
39 var pageIndex = ui.txtPageIndex.value;
40 var pageCount = ui.txtPageCount.value;
41
42 var options = {
43 pageIndex: parseInt(pageIndex),
44 pageCount: parseInt(pageCount),
45 container: ui.pageBox
46 };
47
48 if(options.pageCount > 0){
49 var page = new pagination(options);
50 page.init();
51 }else{
52 alert(‘总页数不能小于0‘);
53 }
54
55 };
56
57 function pagination(options){
58 this.pageIndex = options.pageIndex || 1;
59 this.pageCount = options.pageCount;
60 this.showPage = options.showPage || 3;
61 this.container = options.container;
62 }
63
64 pagination.prototype = {
65 init: function(){
66 /*初始化检查当前页是否合理*/
67 this.pageIndex = this.pageIndex < 1 ? 1 : this.pageIndex;
68 this.pageIndex = this.pageIndex > this.pageCount ? this.pageCount : this.pageIndex;
69
70 /*渲染UI*/
71 this.render();
72 },
73 render: function(){
74 var pageList, setting;
75
76 pageList = [];
77 setting = this.getSetting(this.pageIndex);
78 pageList.push(‘<ul class="pagination">‘);
79
80 if(this.pageIndex > 1){
81 pageList.push(‘<li><button value="‘ + setting.prev + ‘">上一页</button></li>‘);
82
83 if(setting.start > 1){
84 pageList.push(‘<li><button value="1">1</button></li>‘);
85 }
86
87 if(setting.start > 2){
88 pageList.push(‘<li>...</li>‘);
89 }
90 }else{
91 pageList.push(‘<li><button value="1" disabled="disabled">上一页</button></li>‘);
92 }
93
94 for (var i = setting.start; i <= setting.end; i++) {
95 if(i == this.pageIndex){
96 pageList.push(‘<li><button value="‘ + i + ‘" disabled="disabled">‘ + i + ‘</button></li>‘);
97 }else{
98 pageList.push(‘<li><button value="‘ + i + ‘">‘ + i + ‘</button></li>‘);
99 }
100 };
101
102 if(this.pageIndex < this.pageCount){
103 if(setting.end < this.pageCount){
104 if(setting.end < (this.pageCount - 1)){
105 pageList.push(‘<li>...</li>‘);
106 }
107
108 pageList.push(‘<li><button value="‘ + this.pageCount + ‘">‘ + this.pageCount + ‘</button></li>‘);
109 }
110
111 pageList.push(‘<li><button value="‘ + setting.next + ‘">下一页</button></li>‘);
112 }else{
113 pageList.push(‘<li><button value="‘ + this.pageCount + ‘" disabled="disabled">下一页</button></li>‘);
114 }
115
116 pageList.push(‘</ul>‘);
117 this.container.innerHTML = pageList.join(‘\n‘);
118 this.regEvent();
119 },
120 regEvent: function(){
121 /*事件注册*/
122 var _this = this;
123 var button = this.container.getElementsByTagName(‘button‘);
124
125 for(var i = 0; i < button.length; i++){
126 button[i].onclick = function(){
127 _this.change(parseInt(this.value));
128 };
129 }
130 },
131 change: function(index){
132 /*当前页改变时触发*/
133 this.pageIndex = index;
134 this.render();
135 this.onChange(index);
136 },
137 getSetting: function(index){
138 var start, end, prev, next, s, e;
139
140 s = 0;
141 e = 0;
142
143 start = index - this.showPage;
144 end = index + this.showPage;
145
146 if(start < 1){
147 s = Math.abs(start) + 1;
148 start = 1;
149 }
150
151 if(end > this.pageCount){
152 e = end - this.pageCount;
153 end = this.pageCount;
154 }
155
156 if(s > 0 && e <= 0){
157 e = s + end;
158 end = e > this.pageCount ? this.pageCount : e;
159 }else if(e > 0 && s <= 0){
160 s = start - e;
161 start = s < 1 ? 1: s;
162 }
163
164 prev = index > start ? index - 1 : 1;
165 next = index < end ? index + 1 : end;
166
167 /*核心算法, 根据当前页计算出显示的起始页和截止页, 上一页, 下一页 这些数据*/
168 return {start: start, end: end, prev: prev, next: next};
169 },
170 onChange: function(index){
171 /*空函数, 可覆盖*/
172 console.log(index);
173 }
174 };
175
176
177
178 </script>
179 </body>
180 </html>

时间: 2024-10-11 04:21:41

pagination分页插件的相关文章

jQuery Pagination分页插件

jQuery Pagination分页插件 1.介绍 此jQuery插件为Ajax分页插件,一次性加载,故分页切换时无刷新与延迟. 2.使用方法 1.引入以下的js和css文件 1 <link rel="stylesheet" href="pagination.css"> 2 <script type="text/javascript" src="jquery.min.js"></script&g

JQuery Pagination 分页插件 增加了首页尾页以及跳转功能

JQuery分页插件 挺好用的 但是官方是没有提供首页尾页以及跳转功能 我觉得这个功能可以有,于是就改进了一下 一个js一个css从连接里面下 链接:http://pan.baidu.com/s/1nvaq99R 密码:9nfb 上效果图: 页面代码 <script type="text/javascript"> //分页查询开始 $(document).ready(function() { getDataList(0, null); }); var rows = 10;

jQuery Pagination分页插件的使用

一.引用CSS和JS: <link href="/Content/Plugins/jQuery.Pagination_v2.2/pagination.css" rel="stylesheet" type="text/css" /> <script src="/Content/Plugins/jQuery.Pagination_v2.2/jquery.pagination.js" type="text

Jquery 分页插件 Jquery Pagination

Jquery 分页插件 Jquery Pagination 分页插件来说,我觉得适用就行,尽量简单然后能够根据不同的应用场景能够换肤.展现形式等. 对于初学者想写分页插件的同学,也可以看下源码,代码也挺简单明了的,也助于自己写个小插件. 不过我比较懒,一般直接拿着各种插件用,想偷懒的同学们也可以用用看: Jquery Pagination 大家可以去这里查看下演示:http://www.xuetub.com/plugin/jquery/221 使用方法也比较简单: <div id="pag

分享一个Jquery 分页插件 Jquery Pagination

分页插件来说,我觉得适用就行,尽量简单然后能够根据不同的应用场景能够换肤.展现形式等. 对于初学者想写分页插件的同学,也可以看下源码,代码也挺简单明了的,也助于自己写个小插件. 不过我比较懒,一般直接拿着各种插件用,想偷懒的同学们也可以用用看: Jquery Pagination 大家可以去这里查看下演示:http://www.xuetub.com/plugin/jquery/221 使用方法也比较简单: <div id="page2" class="m-paginat

浅谈jQuery Pagination Ajax 分页插件的使用

插件介绍 此插件是jQuery的ajax分页插件.分页切换时无刷新也无延迟,因为是一次性加载的.如果你用到此插件作分页的时候,涉及到的数据量大,建议不要使用此插件,因为加载慢会导致用户体验不好! 插件使用 此插件使用比较简单.主要引入以下文件就可以用了 1.jquery.js依赖库 2.pagination.css 这个主要是样式,我们在元素使用的时候将分页列表放在class类为pagination的标签内即可 <div class='pagination'></div> 3.jq

jq的分页插件(pagination.min.js)

首先引入jq,再引pagination.min.js和pagination.css html: <div id="pagingmix" class="page m-style M-box3"> </div> js: function laodPage(pages,alen){ $(".M-box3").whjPaging({ totalSize: alen, totalPage: pages, callBack: func

Ajax分页插件Pagination从前台jQuery到后端java总结

前端代码.html var pageSize = 10;//设置每页显示条数 var total;//数据总条数 function pagination() { $("#Pagination").pagination(total, { callback : PageCallback, prev_text : '上一页', next_text : '下一页', items_per_page : pageSize, num_display_entries : 4, //连续分页主体部分显示

JQueryPagination分页插件,ajax从struts请求数据

2017-07-16 学完了struts,做了个关于分页的小例子,用到了JQuery分页插件Pagination,先贴下插件下载地址 http://www.jq22.com/jquery-info13734 插件作者对于参数讲解的不够详细,琢磨了半天才明白怎么用,不多说,直接代码 1.客户端(jsp页面) 1 /*这些css为了控制生成的数据和分页的li标签的位置*/ 2 a { 3 text-decoration:none; 4 color:black; 5 font-weight: bold