自己写的一个jQuery分页插件

  1 ;(function($){
  2         $.fn.extend({    
  3     pageList: function (json) {
  4         function PageList() {
  5             this.initHtml = ""; //初次加载后的Html
  6             this.num = 0; //页码个数
  7             this.totalPageCount = 0;//总页数
  8             this.size = 0;//每页数据条数
  9             this.hiddenPosition = 3;//省略号的位置
 10             this.fwNotNum = 2; //插件前面的非页码个数
 11             this.fwNotNumHtml = "";//插件前面的非页码html
 12             this.backNotNumHtml = "";//插件后面的非页码html
 13               }
 14       PageList.prototype.init = function (objPageList, json) {
 15           var pageListFunction = this;
 16           objPageList.addClass("pageList");
 17           if (json) {
 18               if (!json.total || isNaN(json.total)) {
 19                   json.total = 1;
 20                   // alert("分页插件total参数异常,插件加载失败");
 21                   //return;
 22               }
 23               if (!json.size || isNaN(json.size)) {
 24                   json.size = 10;
 25               }
 26               if (!json.num || isNaN(json.num) || json.num < 10) {
 27                   json.num = 10;
 28               }
 29               if(!json.ajax){
 30                   json.ajax=function(){};
 31               }
 32           }
 33           var fwNotNumHtml = "<a class='pageList_FirstPage'><label>首页</label></a><a class='pageList_PrevPage'>上页</a>";
 34           var backNotNumHtml = "<a class='pageList_NextPage'>下页</a><a class='pageList_LastPage'>末页</a><input class='jumpNum' type='text' value='' /><a class='jumpText' href='javascript:void(0)'>跳转</a>";
 35           var html = "";
 36           html += fwNotNumHtml;
 37           var totalPageCount = Math.ceil(json.total / json.size);
 38 
 39           if (totalPageCount <= json.num) {
 40               for (var i = 1; i <= totalPageCount; i++) {
 41                   if (i == 1) {
 42                       html += "<a class='pageList_Num pageList_Current'>" + i + "</a>";
 43                       continue;
 44                   }
 45                   html += "<a class='pageList_Num'>" + i + "</a>";
 46               }
 47           }
 48           else {
 49               var hidden = json.num - pageListFunction.hiddenPosition;
 50               for (var i = 1; i <= totalPageCount; i++) {
 51                   if (i == 1) {
 52                       html += "<a class='pageList_Num pageList_Current'>" + i + "</a>";
 53                       continue;
 54                   }
 55                   if (i == hidden) {
 56                       html += "<a class='pageList_Hidden'>...</a>";
 57                       break;
 58                   }
 59                   html += "<a class='pageList_Num'>" + i + "</a>";
 60               }
 61               for (var j = pageListFunction.hiddenPosition - 1; j >= 0; j--) {
 62                   html += "<a class='pageList_Num'>" + (totalPageCount - j) + "</a>";
 63               }
 64           }
 65           html += backNotNumHtml;
 66           objPageList.html(html);
 67           pageListFunction.initHtml = html;
 68           pageListFunction.num = json.num;
 69           pageListFunction.size = json.size;
 70           pageListFunction.totalPageCount = totalPageCount;
 71           pageListFunction.fwNotNumHtml = fwNotNumHtml;
 72           pageListFunction.backNotNumHtml = backNotNumHtml;
 73           pageListFunction.ajax=json.ajax;
 74       }
 75       PageList.prototype.centerPage = function () { return Math.ceil(this.totalPageCount / 2); }
 76       PageList.prototype.limitData = function () { return this.totalPageCount - this.hiddenPosition - 1; }
 77       PageList.prototype.clickA = function (objA, objPageList) {
 78           var pageListFunction = this;
 79           var clickA = 0;
 80           if (objA.hasClass("pageList_Current") || objA.hasClass("pageList_Hidden")) {
 81               return;
 82           }
 83           else if (objA.hasClass("pageList_Num")) {
 84               clickA = parseInt(objA.html());
 85           }
 86           else if (objA.is(".pageList_FirstPage")) {
 87               if (pageListFunction.getCurrentData(objPageList) == 1)
 88                   return;
 89               clickA = 1;
 90           }
 91           else if (objA.is(".pageList_PrevPage")) {
 92                clickA = pageListFunction.getCurrentData(objPageList) - 1;
 93               if (clickA <= 0)
 94                   return;
 95           }
 96           else if (objA.is(".pageList_NextPage")) {
 97                clickA = pageListFunction.getCurrentData(objPageList) + 1;
 98               if (clickA > pageListFunction.totalPageCount)
 99                   return;
100           }
101           else if (objA.is(".pageList_LastPage")) {
102               if (pageListFunction.getCurrentData(objPageList) == pageListFunction.totalPageCount)
103                   return;
104               clickA = pageListFunction.totalPageCount;
105           }
106           else if (objA.is(".jumpText")||objA.is("input.jumpNum")) {
107               var clickAtext = $(".jumpNum", objPageList).val();
108               if (clickAtext == "") return;
109               clickA = parseInt(clickAtext);
110               var currentA = pageListFunction.getCurrentData(objPageList);
111               if (isNaN(clickA)) { return; }
112               else if (clickA <=0) { return; }
113               else if (clickA > pageListFunction.totalPageCount) { return; }
114               else if (clickA == currentA) { return; }
115           }
116           pageListFunction.ajax();
117           pageListFunction.clickNum(clickA, objPageList); 
118       }
119       
120       PageList.prototype.getCurrentData = function (objPageList) { 
121       return parseInt($("a.pageList_Current",objPageList).html());
122       }
123     PageList.prototype.getHiddenFwOrBackData=function(objPageList,type){//返回省略号前面或后面的值
124     if(type=="fw")
125     return parseInt($("a.pageList_Hidden",objPageList).prev().html());
126     else if(type=="back")
127         return parseInt($("a.pageList_Hidden", objPageList).next().html());    
128     }
129     PageList.prototype.hiddenFwOrBackHtml = function (type) {//返回省略号前后的htm页码的html
130         var html = "";
131         if (type === "fw") {//省略号在前
132             for (var i = 1; i <= this.hiddenPosition; i++) {
133                 html += "<a class='pageList_Num'>" + i + "</a>";
134             }
135         }
136         else if (type === "back") {//省略号在后
137             for (var j = this.hiddenPosition - 1; j >= 0; j--) {
138                 html += "<a class='pageList_Num'>" + (this.totalPageCount - j) + "</a>";
139             }
140         }
141         return html;
142     }
143     PageList.prototype.addPageList_Current = function (clickNum, objPageList) {
144         $("a.pageList_Num", objPageList).removeClass("pageList_Current").each(function () {
145             if (parseInt($(this).html()) == clickNum) {
146                 $(this).addClass("pageList_Current");
147             }
148         });
149     }
150     PageList.prototype.getHiddenHtml = function () {
151         return "<a class='pageList_Hidden'>...</a>";
152     };
153     PageList.prototype.newHtml = function (type, objPageList, clickNum) {//返回新的Html,只返回不操作
154         var pageListFunction = this;
155         var html = "";
156         if (type == 1)
157             html += pageListFunction.initHtml;
158         else if (type == 2) {
159             html += pageListFunction.fwNotNumHtml; //首页,第一页
160             html += pageListFunction.hiddenFwOrBackHtml("fw"); //省略号前的数
161             html += pageListFunction.getHiddenHtml(); //省略号
162             var start = pageListFunction.totalPageCount - (pageListFunction.num - pageListFunction.hiddenPosition - 1) + 1;
163             for (var i = start; i <= pageListFunction.totalPageCount; i++) {
164                 html += "<a class='pageList_Num'>" + i + "</a>";
165             }
166             html += pageListFunction.backNotNumHtml;
167         }
168         else if (type == 3) {
169             clickNum += 1;
170             html += pageListFunction.fwNotNumHtml;
171             var start = clickNum - (pageListFunction.num - pageListFunction.hiddenPosition - 1) + 1;
172             for (var i = start; i <= clickNum; i++) {
173                 html += "<a class='pageList_Num'>" + i + "</a>";
174             }
175             html += pageListFunction.getHiddenHtml();
176             html += pageListFunction.hiddenFwOrBackHtml("back");
177             html += pageListFunction.backNotNumHtml;
178         }
179         else if (type == 4) {
180             html += pageListFunction.fwNotNumHtml;
181             html += pageListFunction.hiddenFwOrBackHtml("fw");
182             html += pageListFunction.getHiddenHtml();
183             clickNum -= 1;
184             var end = pageListFunction.num - pageListFunction.hiddenPosition - 1 + clickNum - 1;
185             for (var i = clickNum; i <= end; i++) {
186                 html += "<a class='pageList_Num'>" + i + "</a>";
187             }
188             html += pageListFunction.backNotNumHtml;
189         }
190         return html;
191     }
192     PageList.prototype.clickNum = function (clickNum, objPageList) {
193         var pageListFunction = this;       
194         var html = "";
195         if (pageListFunction.totalPageCount <= pageListFunction.num) {
196             pageListFunction.addPageList_Current(clickNum, objPageList); return;
197         }
198         else if (clickNum <= 5) {
199             html = pageListFunction.newHtml(1, objPageList);
200         }
201         else if (clickNum >= pageListFunction.limitData()) {
202             html = pageListFunction.newHtml(2, objPageList);
203         }
204         else {
205             if (clickNum < pageListFunction.centerPage())
206                 html = pageListFunction.newHtml(3, objPageList, clickNum);
207             else if (clickNum >= pageListFunction.centerPage())
208                 html = pageListFunction.newHtml(4, objPageList, clickNum);
209         }
210         objPageList.html(html);
211         pageListFunction.addPageList_Current(clickNum, objPageList);
212     }
213         var objPageList = $(this);
214         var p = new PageList();
215         p.init(objPageList, json, p);        
216         objPageList.on("click", "a:not('.pageList_Hidden')", function () {
217             p.clickA($(this), objPageList);
218         });
219         objPageList.on("keyup","input.jumpNum",function(event){
220           if(event.which===13){
221               p.clickA($(this), objPageList);
222           }
223         });
224     }
225 });
226         })(jQuery);
1 .pageList{ clear:both; overflow:hidden;}
2     .pageList .pageList_Nums{ float:left;}
3     .pageList  a{border:1px solid #ccc; margin-left:10px; float:left; display:block; overflow:hidden; padding:3px; font-family:微软雅黑; font-size:12px; min-width:15px; text-align:center; cursor:pointer; height:20px; line-height:20px;}
4     .pageList  a:hover,.pageList_Current{ background-color:#278DE1;}
5     .pageList a.pageList_Hidden{ border:none; cursor:default;}
6     .pageList a.pageList_Hidden:hover{ background-color:transparent;}
7     .pageList input.jumpNum{ width:30px; border:1px solid #8c8c8c; float:left; width:30px; height:20px; margin-left:5px; line-height:20px; padding:3px; text-align:center;}
8     .pageList a.jumpText{ border:none;background:none; outline:none; margin-left:0;}

调用插件:

 1 $(function(){
 2       $("#pagelist").pageList({ total: 1021, num: 10, size: 8,ajax:function(){
 3   $.ajax({
 4                         type: "POST",
 5                         //dataType: "html",
 6                         url: "",
 7                         cache:false,
 8                         //data: { pageStar: pageStar, pageEnd: pageEnd },
 9                         error: function () { },
10                         success: function (data) {//alert("这里的ajax可以正常执行");
11                         }
12                     });
13           } });
14 })

HTML代码:

1 <div id="pagelist"></div>

 界面效果:

原文地址:https://www.cnblogs.com/guoyansi19900907/p/3585974.html