1/* 2* jQueryå页æä»¶sPage 3*/ 4(function ($, window, document, undefined) { 5 'use strict'; 6 var defaults = { 7 page: 1,//å½å页 8 pageSize: 10,//æ¯é¡µæ¾ç¤ºå¤å°æ¡ 9 total: 0,//æ°æ®æ»æ¡æ° 10 showTotal: true,//æ¯å¦æ¾ç¤ºæ»æ¡æ° 11 totalTxt: "å ±{total}æ¡",//æ°æ®æ»æ¡æ°æåæè¿° 12 noData: false,//æ²¡ææ°æ®æ¶æ¯å¦æ¾ç¤ºå页ï¼é»è®¤false䏿¾ç¤ºï¼trueæ¾ç¤ºç¬¬ä¸é¡µ 13 showSkip: true,//æ¯å¦æ¾ç¤ºè·³é¡µ 14 showPN: true,//æ¯å¦æ¾ç¤ºä¸ä¸ç¿»é¡µ 15 prevPage: "ä¸ä¸é¡µ",//ä¸ç¿»é¡µæé®æå 16 nextPage: "ä¸ä¸é¡µ",//ä¸ç¿»é¡µæé®æå 17 fastForward: 5,//å¿«è¿å¿«éï¼é»è®¤0页 18 backFun: function (page) { }//ç¹å»å页æé®åè°å½æ°ï¼è¿åå½å页ç 19 }; 20 function Plugin(element, options) { 21 this.element = $(element); 22 this.settings = $.extend({}, defaults, options); 23 this.pageNum = 1, //è®°å½å½å页ç 24 this.pageList = [], //页ç éå 25 this.pageTatol = 0; //è®°å½æ»é¡µæ° 26 this.init(); 27 } 28 $.extend(Plugin.prototype, { 29 init: function () { 30 this.element.empty(); 31 this.viewHtml(); 32 }, 33 creatHtml: function (i) { 34 i == this.settings.page ? this.pageList.push('<button class="active sub-btn-page" data-page=' + i + '>' + i + '</button>') 35 : this.pageList.push('<button data-page=' + i + ' class="sub-btn-page">' + i + '</button>'); 36 }, 37 viewHtml: function () { 38 var settings = this.settings; 39 var pageTatol = 0; 40 var pageArr = [];//å页å ç´ éåï¼åå°doméç»æ¬¡æ° 41 if (settings.total > 0) { 42 pageTatol = Math.ceil(settings.total / settings.pageSize); 43 } else { 44 if (settings.noData) { 45 pageTatol = 1; 46 settings.page = 1; 47 settings.total = 0; 48 } else { 49 return; 50 } 51 } 52 this.pageTatol = pageTatol; 53 this.pageNum = settings.page; 54 55 pageArr.push('<div class="spage-number">'); 56 this.pageList = [];//页ç å ç´ éåï¼å æ¬ä¸ä¸é¡µ 57 if (settings.showPN) { 58 settings.page == 1 ? this.pageList.push('<button class="button-disabled" data-page="prev">' + settings.prevPage + '</button>') 59 : this.pageList.push('<button data-page="prev" class="btn-change-page">' + settings.prevPage + '</button>'); 60 } 61 if (pageTatol <= 6) { 62 for (var i = 1; i < pageTatol + 1; i++) { 63 this.creatHtml(i); 64 } 65 } else { 66 if (settings.page < 5) { 67 for (var i = 1; i <= 5; i++) { 68 this.creatHtml(i); 69 } 70 // this.pageList.push('<button data-page="after" class="spage-after">...</button><button data-page=' + pageTatol + '>' + pageTatol + '</button>'); 71 } else if (settings.page > pageTatol - 4) { 72 // this.pageList.push('<button data-page="1">1</button><button data-page="before" class="spage-before">...</button>'); 73 for (var i = pageTatol - 4; i <= pageTatol; i++) { 74 this.creatHtml(i); 75 } 76 } else { 77 // this.pageList.push('<button data-page="1">1</button><button data-page="before" class="spage-before">...</button>'); 78 for (var i = settings.page - 2; i <= Number(settings.page) + 2; i++) { 79 this.creatHtml(i); 80 } 81 // this.pageList.push('<button data-page="after" class="spage-after">...</button><button data-page=' + pageTatol + '>' + pageTatol + '</button>'); 82 } 83 } 84 if (settings.showPN) { 85 settings.page == pageTatol ? this.pageList.push('<button class="button-disabled" data-page="next">' + settings.nextPage + '</button>')
86 : this.pageList.push('<button data-page="next" class="btn-change-page">' + settings.nextPage + '</button>'); 87 } 88 pageArr.push(this.pageList.join('')); 89 pageArr.push('</div>'); 90 if (settings.showTotal) { 91 pageArr.push('<div class="spage-total">' + settings.totalTxt.replace(/\{(\w+)\}/gi, settings.total) + '</div>'); 92 } 93 if (settings.showSkip) { 94 pageArr.push('<div class="spage-skip">å°ç¬¬ <input type="text" value="' + settings.page + '"/> 页 <button data-page="go">ç¡®å®</button></div>'); 95 } 96 this.element.html(pageArr.join('')); 97 this.clickBtn(); 98 }, 99 clickBtn: function () { 100 var that = this; 101 var settings = this.settings; 102 var ele = this.element; 103 var pageTatol = this.pageTatol; 104 this.element.off("click", "button"); 105 this.element.on("click", "button", function () { 106 var pageText = $(this).data("page"); 107 switch (pageText) { 108 case "prev": 109 settings.page = settings.page - 1 >= 1 ? settings.page - 1 : 1; 110 pageText = settings.page; 111 break; 112 case "next": 113 settings.page = Number(settings.page) + 1 <= pageTatol ? Number(settings.page) + 1 : pageTatol; 114 pageText = settings.page; 115 break; 116 case "before": 117 settings.page = settings.page - settings.fastForward >= 1 ? settings.page - settings.fastForward : 1; 118 pageText = settings.page; 119 break; 120 case "after": 121 settings.page = Number(settings.page) + Number(settings.fastForward) <= pageTatol ? Number(settings.page) + Number(settings.fastForward) : pageTatol; 122 pageText = settings.page; 123 break; 124 case "go": 125 var p = parseInt(ele.find("input").val()); 126 if (/^[0-9]*$/.test(p) && p >= 1 && p <= pageTatol) { 127 settings.page = p; 128 pageText = p; 129 } else { 130 return; 131 } 132 break; 133 default: 134 settings.page = pageText; 135 } 136 // ç¹å»æè·³è½¬å½å页ç 䏿§è¡ä»»ä½æä½ 137 if (pageText == that.pageNum) { 138 return; 139 } 140 that.pageNum = settings.page; 141 that.viewHtml(); 142 settings.backFun(pageText); 143 }); 144 this.element.off("keyup", "input"); 145 this.element.on("keyup", "input", function (event) { 146 if (event.keyCode == 13) { 147 var p = parseInt(ele.find("input").val()); 148 if (/^[0-9]*$/.test(p) && p >= 1 && p <= pageTatol && p != that.pageNum) { 149 settings.page = p; 150 that.pageNum = p; 151 that.viewHtml(); 152 settings.backFun(p); 153 } else { 154 return; 155 } 156 } 157 }); 158 if (settings.fastForward > 0) { 159 ele.find(".spage-after").hover(function () { 160 $(this).html("»"); 161 }, function () { 162 $(this).html("..."); 163 }); 164 ele.find(".spage-before").hover(function () { 165 $(this).html("«"); 166 }, function () { 167 $(this).html("..."); 168 }); 169 } 170 } 171 }); 172 $.fn.sPage = function (options) { 173 return this.each(function () { 174 new Plugin(this, options); 175 }); 176 } 177})(jQuery, window, document);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.