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

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

我們可以看到,在未選中設備信息部分有一個分頁,這個是要和后台進行數據交互的,姑且稱為“真分頁”,而選中設備信息部分也有一個分頁,這個並不和后台進行數據交互,僅僅是為了解決數據條數過多造成的頁面過長,針對這個問題,我使用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>
