当前位置: 代码迷 >> Web前端 >> jQuery分页领航
  详细解决方案

jQuery分页领航

热度:400   发布时间:2012-06-28 15:20:03.0
jQuery分页导航
由于做项目时很多模块都需要分页导航,网上找到的又大都不是想要的,所以自己动手简单写了一个。该分页导航主要是和ajax配合使用,ajax向后台传递current,pageSize两个参数,分别表示页数,页面记录大小,返回json,主要有total属性和列表数组。点击分页导航数字的时候重复上述过程。当然我以下只是简单师范,并未涉及ajax。代码如下:(还有很多不完善的地方,望见谅。)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="jquery-1.6.4.js"></script>
<script type="text/javascript">
	//界面加载完毕的初始化方法 
	$(document).ready(function(){
		initPage("page",125,1,10,7);
	});
   /**
    * CopyRight By JasionNan
    * 该几个函数主要用于页面导航
    * div --标签的id值
    * total --ajax返回的记录总数
    * current --第几页
    * pageSize --每页显示的记录数
    * count --导航显示的页数,即要显示多少个数字
    * 需重写goToPage函数
    */ 
	var div,total,current=1,pageSize,count;
	function initPage(div,total,current,pageSize,count){
		this.div=div;
		this.total=total;
		this.current=current;
		this.pageSize=pageSize;
		this.count=count;
		this.pageList=pageList;
		pageList();
	}
	function pageList(){//count表示每页显示的标签数,奇数
	   var pages=parseInt(this.total/this.pageSize);//求出总页数
	   if(this.total%this.pageSize!=0){
	       pages++;
	   }
	   if(pages<2) return;
	   var preVal=this.current-1;
	   var nextVal=this.current+1;
	   var pre=$("<a href='javascript:void(0)' onclick='goToPage("+preVal+")'>上一页</a>");
	   var next=$("<a href='javascript:void(0)' onclick='goToPage("+nextVal+")'>下一页</a>");
	   if(pages<=this.count){
	       if(this.current>1){
	          $('#'+this.div).append(pre);  
	       }
	       for(var i=1;i<=pages;i++){
	          if(this.current==i){
	            $('#'+this.div).append("<a>"+i+"</a>");  
	          }else{
	            $('#'+this.div).append("<a href='javascript:void(0)' onclick='goToPage("+i+")'>"+i+"</a>");
	          }
	       }
	   }else{
	       var left=this.current-1,right=pages-this.current,middle=parseInt(this.count/2);
	       if(left<=middle&left>=0){//左边页数小于count/2
	          var rcount=this.count-1-left;//右边显示标签个数
	          if(this.current>1){
	            $('#'+this.div).append(pre);  
	            for(var i=1;i<=left;i++){
	               $('#'+this.div).append("<a href='javascript:void(0)' onclick='goToPage("+i+")'>"+i+"</a>");
	            }
	          }
	          $('#'+this.div).append("<a>"+this.current+"</a>");
	          if(rcount<right){
	             for(var i=1;i<=(rcount-1);i++){
	                var base=this.current+i;
	                $('#'+this.div).append("<a href='javascript:void(0)' onclick='goToPage("+base+")'>"+base+"</a>");
	             } 
	             $('#'+this.div).append("<a>...</a>");
	             $('#'+this.div).append("<a href='javascript:void(0)' onclick='goToPage("+pages+")'>"+pages+"</a>");
	          }else{
	             for(var i=this.current+1;i<=pages;i++){
	                $('#'+this.div).append("<a href='javascript:void(0)' onclick='goToPage("+i+")'>"+i+"</a>");
	             }
	          }
	       }else if(left>middle){//左边页数个数大于middle
	          $('#'+this.div).append(pre);
	          $('#'+this.div).append("<a href='javascript:void(0)' onclick='goToPage(1)'>"+1+"</a>");
	          $('#'+this.div).append("<a>...</a>");
	          var rpages=pages-this.current;
	          if(rpages<=middle){
	            var lcount=this.count-1-rpages;
	            for(var i=this.current-lcount+1;i<this.current;i++){
	               $('#'+this.div).append("<a href='javascript:void(0)' onclick='goToPage("+i+")'>"+i+"</a>");
	            }
	            $('#'+this.div).append("<a>"+current+"</a>");
	            for(var i=this.current+1;i<=pages;i++){
	               $('#'+this.div).append("<a href='javascript:void(0)' onclick='goToPage("+i+")'>"+i+"</a>");
	            }
	          }else{
	            for(var i=this.current-middle+1;i<this.current;i++){
	               $('#'+this.div).append("<a href='javascript:void(0)' onclick='goToPage("+i+")'>"+i+"</a>");
	            }
	            $('#'+this.div).append("<a>"+this.current+"</a>");
	            for(var i=this.current+1;i<=this.current+middle-1;i++){
	               $('#'+this.div).append("<a href='javascript:void(0)' onclick='goToPage("+i+")'>"+i+"</a>");
	            }
	            $('#'+this.div).append("<a>...</a>");
	            $('#'+this.div).append("<a href='javascript:void(0)' onclick='goToPage("+pages+")'>"+pages+"</a>");
	          }
	       }
	   }
	   if(this.current<pages){
	       $('#'+this.div).append(next);
	   }
	   //添加样式
	   $('#'+this.div+" a").css("margin",3);
	}

	function goToPage(page){
	  $("#"+this.div).append("<br>");
	  this.current=page;
	  pageList();
	}

</script>
<title>分页导航</title>
</head>
<body>
<div id="page"></div>
</body>
</html>

效果如下:

  相关解决方案