使用jQuery實現偽分頁


在之前的項目中遇到一個這樣的問題,頁面分為上下兩部分(分別稱為未選中設備信息部分和選中設備信息部分),上面是從數據庫拿出來的所有的設備信息,下面是顯式已選中的設備信息,頁面如下所示:

 

可以選中其中的任意數量的設備,點擊“添加到以選中設備”,就會如下圖所示:

我們可以看到,在未選中設備信息部分有一個分頁,這個是要和后台進行數據交互的,姑且稱為“真分頁”,而選中設備信息部分也有一個分頁,這個並不和后台進行數據交互,僅僅是為了解決數據條數過多造成的頁面過長,針對這個問題,我使用jQuery,上網查閱了一些資料,完成了如下所示的偽分頁代碼:

  1 <!-- 偽分頁實現 -->
  2     <script type="text/javascript">
  3         function pretendDevide(){
  4             // 每頁顯示的條數
  5             var everyPageNum = 10;
  6             // 當前的頁數
  7             var current_Num = 1;
  8             // 拿到有所有已選設備組成的數組
  9             var tbodyNode = $("#chooseDeviceTBody tr").toArray();
 10             // 獲取數組的長度
 11             var arrayLengrh = tbodyNode.length;
 12             // 設置總條數
 13             $(".totalNum").text(arrayLengrh);
 14             // 獲取總頁數
 15             totalPageNum = Math.ceil(totalPageNum = arrayLengrh/everyPageNum);
 16             // 顯示總頁數
 17             $(".totalPage").text(totalPageNum);
 18             // 如果數組大小大於10
 19             if(arrayLengrh > 10){
 20                 $("#chooseDeviceTBody tr").show();
 21                 // 則把后面的全部隱藏
 22                 $("#chooseDeviceTBody tr:gt(9)").hide();
 23             }else{
 24                 // 小於十個也可以顯示
 25                 $("#chooseDeviceTBody tr").show();
 26             }
 27             // 點擊下一頁按鈕綁定觸發事件
 28             $(".nextPage").click(function(){
 29                 // 判斷當期頁碼是否大於最大頁碼,如果大於等於,則不觸發下一頁
 30                 if(current_Num >= totalPageNum){
 31                     return false;
 32                 }else{
 33                     // 執行下一頁
 34                     //當前頁碼加1
 35                     current_Num += 1;
 36                     //顯示當前頁碼
 37                     $(".current_Num").text(current_Num);
 38                     // 讓所有tr隱藏出來
 39                     $("#chooseDeviceTBody tr").hide();
 40                     //獲取該頁顯示的起始范圍和結束范圍
 41                     var start = everyPageNum*(current_Num - 1);
 42                     var end = everyPageNum*current_Num;
 43                     // 判斷在start和end中間的顯示,其余隱藏
 44                     for(var i = start;i < end;i++){
 45                         $("#chooseDeviceTBody tr").eq(i).show();
 46                     }
 47                 }
 48             });
 49 
 50             // 點擊上一頁按鈕觸發事件
 51             $(".prevPage").click(function(){
 52                 // 判斷當期頁碼是否小於等於0,如果小於等於,則不觸發上一頁
 53                 if(current_Num <= 1){
 54                     return false;
 55                 }else{
 56                     // 執行上一頁
 57                     //當前頁碼減1
 58                     current_Num -= 1;
 59                     //顯示當前頁碼
 60                     $(".current_Num").text(current_Num);
 61                     // 讓所有tr隱藏出來
 62                     $("#chooseDeviceTBody tr").hide();
 63                     //獲取該頁顯示的起始范圍和結束范圍
 64                     var start = everyPageNum*(current_Num - 1);
 65                     var end = everyPageNum*current_Num;
 66                     // 判斷在start和end中間的顯示,其余隱藏
 67                     for(var i = start;i < end;i++){
 68                         $("#chooseDeviceTBody tr").eq(i).show();
 69                     }
 70                 }
 71             });
 72 
 73             // 點擊尾頁按鈕綁定事件
 74             $(".endPage").click(function(){
 75                 // 判斷當期頁碼是否大於最大頁碼,如果大於等於,則不觸發尾頁
 76                 if(current_Num >= totalPageNum){
 77                     return false;
 78                 }else{
 79                     // 執行尾頁
 80                     //當前頁碼賦值為最大頁碼
 81                     current_Num = totalPageNum;
 82                     //顯示當前頁碼
 83                     $(".current_Num").text(current_Num);
 84                     // 讓所有tr隱藏出來
 85                     $("#chooseDeviceTBody tr").hide();
 86                     //獲取該頁顯示的起始范圍和結束范圍
 87                     var start = everyPageNum*(current_Num - 1);
 88                     var end = everyPageNum*current_Num;
 89                     // 判斷在start和end中間的顯示,其余隱藏
 90                     for(var i = start;i < end;i++){
 91                         $("#chooseDeviceTBody tr").eq(i).show();
 92                     }
 93                 }
 94             });
 95             $(".jumpTo").click(function(){
 96                 // 獲取要跳轉到的頁碼
 97                 var jumpTo = $("#jumpPageNum").val();
 98                 var jumpToInt = parseInt(jumpTo);
 99                 // 如果要跳轉的頁面不符合要求,則不執行相關操作
100                 if(jumpToInt < 1 || jumpToInt > totalPageNum){
101                     // 返回第一頁
102                     current_Num = 1;
103                 }else{
104                     current_Num = jumpToInt;
105                 }
106                 $(".current_Num").text(current_Num);
107                 $("#chooseDeviceTBody tr").hide();
108                 var start = everyPageNum*(current_Num - 1);
109                 var end = everyPageNum*current_Num;
110                 for(var i = start;i < end;i++){
111                     $("#chooseDeviceTBody tr").eq(i).show();
112                 }
113             });
114 
115             // 跳轉首頁firstPage
116             $(".firstPage").click(function(){
117                 // 判斷當期頁碼是否小於等於1
118                 if(current_Num <= 1){
119                     return false;
120                 }else{
121                     //當前頁碼賦值為最小頁碼
122                     current_Num = 1;
123                     //顯示當前頁碼
124                     $(".current_Num").text(current_Num);
125                     // 讓所有tr隱藏出來
126                     $("#chooseDeviceTBody tr").hide();
127                     //獲取該頁顯示的起始范圍和結束范圍
128                     var start = everyPageNum*(current_Num - 1);
129                     var end = everyPageNum*current_Num;
130                     // 判斷在start和end中間的顯示,其余隱藏
131                     for(var i = start;i < end;i++){
132                         $("#chooseDeviceTBody tr").eq(i).show();
133                     }
134                 }
135             });
136         } 
137     </script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM