首页 > 代码库 > 使用jQuery实现伪分页

使用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>

 

使用jQuery实现伪分页