【轉載】jquery插件--簡單的分頁插件

 

         jquery提供很方法的js插件開發函數,關於jquery插件的開發教程,能夠參考博主的上一篇博文《jQuery插件開發精品教程》,這裏就再也不重複。javascript

         因爲項目中常常會使用到分頁顯示列表數據,這裏就會用到關於一組分頁按鈕,以前的分頁按鈕是經過jsp的自定義標籤來實現的一組分頁按鈕,關於jsp的自定義標籤流程,能夠參考《週記(jsp自定義標籤)》。接觸了jquery插件開發後,覺的js插件,無論是使用仍是管理,或者是二次開發,都比jsp的自定義標籤使用起來方便,這裏就經過js的插件形勢編寫分頁按鈕組。css

具體js插件代碼以下:html

 

[javascript]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. ;(function($,window,document,undefined){  
  2.     //自定義對象構造器  
  3.     var SimplePaging = function(ele,opt){  
  4.         this.$element = ele;  
  5.         this.defaults = {  
  6.             'test':"aaa",  
  7.             //必須參數  
  8.             'cPage':1,  //當前頁碼  
  9.             'tPage':1,  //總頁數  
  10.             'clickFun':null,  //點擊調用的函數名  
  11.             //可選參數  
  12.             'space':10,  //頁面間距  
  13.             'showLast':true,  //是否顯示第一頁和最後頁按鈕組       true爲顯示  
  14.             'showNext':true,  //是否顯示下一頁和上一頁按鈕組   true爲顯示  
  15.             'div':{  
  16.                 'float':'right',  
  17.                 'font-size':'14px',               
  18.                 '-moz-user-select': 'none',  
  19.                 '-webkit-user-select':'none',  
  20.                 '-ms-user-select':'none',  
  21.                 '-khtml-user-select':'none',  
  22.                 'user-select':'none'  
  23.             },  
  24.             'btn':{  
  25.                 'display':'inline-block',  
  26.                 'position': 'relative',  
  27.                 'padding':'0 5px',  
  28.                 'letter-spacing':'0px',  
  29.                 'cursor':'pointer',  
  30.             },  
  31.             'btnOver':{  
  32.                 'top':'-1px',  
  33.             },  
  34.             'btnOut':{  
  35.                 'top':'0px',  
  36.             },  
  37.             'btnAction':{  
  38.                 'display':'inline-block',  
  39.                 'position': 'relative',  
  40.                 'padding':'0 5px',  
  41.                 'letter-spacing':'0px',  
  42.                 'color':'#EA8010',                
  43.                 'top':'-1px',  
  44.                 'cursor':'default',  
  45.             },  
  46.         };  
  47.         this.options = $.extend({},this.defaults,opt);  
  48.     };  
  49.       
  50.     //自定義對象方法  
  51.     SimplePaging.prototype = {  
  52.         test:function(){  
  53.             this.$element.html(this.options.test);  
  54.             return this.$element;  
  55.         },  
  56.         writePageBtn:function(){   //   1  10  20  30 31 32 33 34 35 36 37 38 39 40 50 60 ...  
  57.             var cPage = this.options.cPage;  
  58.             var tPage = this.options.tPage;  
  59.             var space = this.options.space;  
  60.             var funName = this.options.clickFun;  
  61.             var c = Math.ceil(cPage/space);  
  62.             //var l = Math.ceil(tPage/space);  
  63.             var id = this.$element.prop("id");  
  64.             var pageDiv = '';  
  65.             //第一頁  
  66.             if(this.options.showLast){  
  67.                 pageDiv = pageDiv + '<span class="pageSpan_'+id+'" onclick="'+funName+'(1)">|<</span>';  
  68.             }  
  69.             //上一頁  
  70.             if(this.options.showNext){  
  71.                 if(cPage>1){  
  72.                     pageDiv = pageDiv + '<span class="pageSpan_'+id+'" onclick="'+funName+'('+(cPage-1)+')"><<</span>';  
  73.                 }else{  
  74.                     pageDiv = pageDiv + '<span class="pageSpan_'+id+'" onclick="javascript:confirm(\'當前已爲第一頁\');"><<</span>';  
  75.                 }  
  76.             }  
  77.             //前期頁區間前部分  
  78.             for(var i=1;i<c;i++){  
  79.                 pageDiv = pageDiv +  '<span class="pageSpan_'+id+'" onclick="'+funName+'('+(i*space)+')">'+(i*space)+'</span>';   
  80.             }  
  81.             //當前頁區間部分  
  82.             for(var i=(c-1)*space+1;i<=c*space&&i<=tPage;i++){  
  83.                 //i = (i==0)?1:i;  //i=0時從1開始  
  84.                 if(cPage==i){  
  85.                     pageDiv = pageDiv +  '<span class="actionPageSpan_'+id+'">'+i+'</span>';  
  86.                 }else{  
  87.                     pageDiv = pageDiv +  '<span class="pageSpan_'+id+'" onclick="'+funName+'('+i+')">'+i+'</span>';   
  88.                 }  
  89.             }  
  90.             //當前頁區間後部分  
  91.             for(var i=c+1;i*space<=tPage;i++){  
  92.                 pageDiv = pageDiv +  '<span class="pageSpan_'+id+'" onclick="'+funName+'('+(i*space)+')">'+(i*space)+'</span>';  
  93.             }  
  94.             //下一頁  
  95.             if(this.options.showNext){  
  96.                 if(cPage<tPage){  
  97.                     pageDiv = pageDiv + '<span class="pageSpan_'+id+'" onclick="'+funName+'('+(cPage+1)+')">>></span>';  
  98.                 }else{  
  99.                     pageDiv = pageDiv + '<span class="pageSpan_'+id+'" onclick="javascript:confirm(\'當前已爲最後一頁\');">>></span>';  
  100.                 }  
  101.             }  
  102.             //最後頁  
  103.             if(this.options.showLast){  
  104.                 pageDiv = pageDiv + '<span class="pageSpan_'+id+'" onclick="'+funName+'('+tPage+')">>|</span>';    
  105.             }  
  106.             this.$element.html(pageDiv);  
  107.               
  108.             //設置相關樣式  
  109.             var div = $.extend({},this.defaults.div,this.options.div);  
  110.             this.$element.css(div);  
  111.             var btn = $.extend({},this.defaults.btn,this.options.btn);  
  112.             this.$element.find(".pageSpan_"+id).css(btn);  
  113.             var obj = this;  
  114.             this.$element.find(".pageSpan_"+id).hover(function(){  
  115.                 var btnOver =  $.extend({},obj.defaults.btnOver,obj.options.btnOver);  
  116.                 $(this).css(btnOver);  
  117.             },function(){  
  118.                 var btnOut =  $.extend({},obj.defaults.btnOut,obj.options.btnOut);  
  119.                 $(this).css(btnOut);  
  120.             });  
  121.             this.$element.find(".actionPageSpan_"+id).css(this.options.btnAction);  
  122.         }  
  123.     };  
  124.       
  125.     //添加插件到jQuery  
  126.     $.fn.simplePaging = function(options){  
  127.         var simplePaging = new SimplePaging(this,options);  
  128.         return simplePaging.writePageBtn();  
  129.     };  
  130.       
  131. })(jQuery,window,document);  

 

注意:該js插件是基於jquery開發的,使用時需先導入jqueryjava

 

簡單使用代碼:jquery

[html]  view plain  copy
 
 在CODE上查看代碼片派生到個人代碼片
  1. <html>  
  2. <script src="jquery-1.10.2.js" ></script>  
  3. <script src="simplePaging.js"></script>  
  4. <script type="text/javascript">  
  5.       
  6. function load(){  
  7.     var param = {  
  8.         "cPage":1,  
  9.         "tPage":54,  
  10.         "clickFun":"test",  //該函數接受一個cPage參數  
  11.         "showLast":false,  
  12.         "div":{"float":"left"}  
  13.     };  
  14.     $("#testDiv").simplePaging(param);  
  15. }  
  16.   
  17. function test(cPage){  
  18.    //業務代碼塊  
  19.   
  20.   //分頁按鈕組控制塊  
  21.     var param = {  
  22.         "cPage":cPage,  
  23.         "tPage":54,  
  24.         "clickFun":"test",  
  25.         "showLast":false,  
  26.         "div":{"float":"left"}  
  27.     };  
  28.     $("#testDiv").simplePaging(param);  
  29. }  
  30.   
  31. </script>  
  32. <body onload="load()">  
  33. <div id="testDiv">  
  34.     <!-- 分頁標籤按鈕 -->  
  35. </div>  
  36. </body>  
  37. </html>  

效果:web

 

插件參數說明:jquery插件

  1. this.defaults = {  
  2.             'test':"aaa",  //開發測試參數,無任何意義  
  3.             //必須參數  
  4.             'cPage':1,  //顯示的當前頁碼  
  5.             'tPage':1,  //顯示的總頁數  
  6.             'clickFun':null,  //點擊頁碼調用的函數名,該函數默認接受一個cPage參數  
  7.             //可選參數  
  8.             'space':10,  //隱藏頁碼的間距  
  9.             'showLast':true,  //是否顯示第一頁和最後頁按鈕組  true爲顯示  
  10.             'showNext':true,  //是否顯示下一頁和上一頁按鈕組  true爲顯示  
  11.             'div':{ },  //分頁按鈕組div的css樣式  
  12.             'btn':{ },  //分頁按鈕組div中的頁碼按鈕的css樣式  
  13.             'btnOver':{ },  //鼠標浮在頁碼按鈕上是頁碼按鈕的css樣式  
  14.             'btnOut':{ },  //鼠標離開頁碼按鈕後頁碼按鈕的css樣式  
  15.             'btnAction':{},  //當前頁碼按鈕的頁碼css樣式  
  16.         };  
  17. //該參數爲默認參數,能夠根據須要二次開發,自定義參數  

實際項目中的效果圖jsp

相關文章
相關標籤/搜索