上图晒效果:
网上确实有很多分页的插件以及开源代码,单本是一个后台开发猿,前台css等样式还驾驭不住,所以就开始自己去写了。其实这个分页原理很简单,就是用ajax往后台传值(当前页码),后台使用limit进行分页。
因为时间紧张,写的应该也不是很完美,有些公共的没有抽取出来,但是用起来还是可以的,这块代码是可以把它当做公共的分页去处理的,我就是用这块代码写了两个稍微不同一些的分页!公共的代码抽取的也差不多,主要就是ajax后台以及返回的值不同而已,只要把总页码的值获取到,点击首页/下一页等传值正确的话,基本上分页是不会出什么问题的,废话不多说,直接上代码了! 注:本项目是全程使用js来写的,前台的数据通过ajax进行获取,然后再进行拼装,动态加载到页面。
1.先把上一页,下一页等的代码附上(里面的值都是伪值,下面会在js里进行重新赋值的!)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| <ul class="page" id="page"> <li id="shouye" class="p-prev disabled"> <a href='javascript:indexpage(1);'>首 页</a> </li>
<li id="shangyiye" class="p-prev disabled" > <a href='javascript:indexpage(-1);'><i></i>上一页</a> </li> <li ><a id="one" href="javascript:void(0);" >1</a></li> <li><a id="two" href="javascript:void(0);" >2</a></li> <li><a id="three" href="javascript:void(0);" >3</a></li> <li class="more"><a id="five" href="javascript:void(0);" >...</a></li> <li><a id="fore" href="javascript:void(0);" >13855</a></li> <li class='p-next'> <a href='javascript:indexpage(-3);' onclick="jumpToPage('2','/goods/ajaxqueryGoodsList.do.html','','goodsListContainer','13855', listPageCallback);">下一页<i></i></a> </li> <li id="weiye" class='p-next'> <a href='javascript:void(0);' onclick="indexpage(0);">尾 页</a> </li>
<li class="total"> <span id="span_number">共13855页 到第<input type="text" id="input_number" class="page-txtbox" />页 <input name="" value="确定" type="button" onclick="jumpToPage(jQuery('#input_number').val(),'/goods/ajaxqueryGoodsList.do.html','','goodsListContainer','13855', listPageCallback);" class="page-btn"/> </span> </li> </ul>
|
2.首先在页面放两个隐藏域,一个是当前页码,一个是总页码,总页码是页面加载完,从后台查询出来后直接附上值的,当前页码是没操作一个,就要对当前页码赋值
1 2
| <input id="jiazai" type="hidden" > <input id="totalpage" type="hidden" >
|
3.写一个页面加载完的function,给总页码和当前页码赋值
1 2 3 4 5
| $(function(){ $('#jiazai').val(1); ajaxfunction(page,arg,chipssort,'');
});
|
4.抽取的ajax方法,此页面会用到好几次这个方法,所有把它收取了出来,因为页面的数据时通过ajax从后台获取到的,后台返回的是一个List集合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| function ajaxfunction(page,arg,chipssort,fontval){ $.ajax({ type:'POST', url:'/admin/receptionchips/showlist', data:{ page:page, sort:arg, chipssort:chipssort, fontval:fontval }, dataType:'json', contentType:'application/x-www-form-urlencoded; charset=utf-8', success:function(data){ commonfunction(data); } }); }
|
5.代码看到这也不是很多,最后一个了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
| function commonfunction(data){ $('#projectlist').find("li").remove(); for (var i=0;i<data.length;i++ ) {
} if(data.length>0){ var pading = data[0].padingnum; $('#totalpage').val(pading); var page = $('#jiazai').val(); $('#countpage').html("**"+page+"**/"+pading+"");
$('#span_number').html("共"+pading+"页 到第<input id="input_number" class="page-txtbox" type="text" />页<input class="page-btn" name="" type="button" value="确定" />") }else{ $('#countpage').html("**"+0+"**/"+0+""); } var pading = data[0].padingnum; var nowpage = $('#jiazai').val(); if(nowpagepading){ $('#five').parent().hide(); $('#fore').parent().hide(); }else{ $('#five').parent().show(); $('#five').text(Number(nowpage)+1); $('#five').attr('href','javascript:indexpage("'+(Number(nowpage)+1)+'");'); } if(Number(nowpage)+2>pading){ $('#fore').parent().hide(); }else{ $('#fore').parent().show(); $('#fore').text(Number(nowpage)+2); $('#fore').attr('href','javascript:indexpage("'+(Number(nowpage)+2)+'");'); }
} if(pading==0){ $('#one').parent().hide(); $('#two').parent().hide(); $('#three').parent().hide(); $('#five').parent().hide(); $('#fore').parent().hide(); }else if(pading==1){ $('#shouye').hide(); $('#weiye').hide(); $('#one').parent().hide(); $('#two').parent().hide(); $('#three').parent().hide(); $('#five').parent().hide(); $('#fore').parent().hide(); }else if(pading==2){ $('#one').parent().show(); $('#two').parent().show(); $('#three').parent().hide(); $('#five').parent().hide(); $('#fore').parent().hide(); }else if(pading==3){ $('#one').parent().show(); $('#two').parent().show(); $('#three').parent().show(); $('#five').parent().hide(); $('#fore').parent().hide(); }else if(pading==4){ $('#one').parent().show(); $('#two').parent().show(); $('#three').parent().show(); $('#five').parent().show(); $('#fore').parent().hide(); }else{ $('#one').parent().show(); $('#two').parent().show(); $('#three').parent().show(); $('#five').parent().show(); $('#fore').parent().show(); }
$('#page a').each(function() { $(this).parent().removeClass("current"); if($(this).text()==nowpage){ $(this).parent().addClass("current"); } }); $("html,body").animate({scrollTop:0}, 500);
$('#jiazai').val(Number(bianlaing)+Number(1)); }
|
好了,到这里分页就完成了,如果你们需要使用的话,可能会话费一会去理解我的代码,其实代码不难,我是使用了两个小时把它写完的,只要一行一行代码看,并且自己再加注释,把这块弄过去,不出半小时绝对搞定!