一、实现效果如下:
二、要求:
① 当前页码为1时,上一页、1都不能点击
② 当前页码为最后一页时,下一页、最后一页均不能点击
③ 默认页码为7页,<7时,该多少页展示多少页
④ >7时,只展示7页
⑤ 对当前页的判断,展示页码:
a. 是否是1、2、3页,如果是正常展示,因为Math.ceil(7/2) = 4,向上取整,中间页数是4,两侧分别是3
b. 是否是最后3页, allNum - nowNum == 0 || allNum - nowNum == 1 || allNum - nowNum == 2
c. 如果不是前3页或后3页,那么页码该如何展示?
nowNum - 4 + i,即当前应该展示的页码
三、代码
// 分页 function page(opt) { if(!opt.id) { return false; } // 获取参数 var $pageNum = $(opt.id); var nowNum = opt.nowNum || 1; var allNum = opt.allNum || 7; var callBack = opt.callBack || function() {}; var $numA = ''; // 上一页 if(nowNum >= 1) { if(nowNum == 1) { var $numA = $('<span class="prev-page">上一页</span>'); }else { var $numA = $('<a class="prev-page">上一页</a>'); $numA.attr('href','#'+(nowNum-1)); } $pageNum.append($numA); } // 总页数<=7时 if(allNum <= 7) { for( var i=1; i<=allNum; i++ ) { if(nowNum == i) { $numA = $('<span>'+i+'</span>'); }else { $numA = $('<a href="'+i+'">'+i+'</a>'); } $pageNum.append($numA); } }else { // 总页数>7时 // 首先至少展示7条 for( var i=1; i<=7; i++ ) { // nowNum为1、2、3时 if(nowNum == 1 || nowNum == 2 || nowNum == 3) { if(nowNum == i) { $numA = $('<span>'+i+'</span>'); }else { $numA = $('<a href="#'+i+'">'+i+'</a>'); } }else if((allNum-nowNum)==0 || (allNum-nowNum)==1 || (allNum-nowNum)==2) { // nowNum为最后三个时 if(allNum - nowNum == 0 && i==7) { $numA = $('<span>'+(allNum - 7 + i)+'</span>'); }else if((allNum-nowNum) == 1 && i==6) { $numA = $('<span>'+(allNum - 7 + i)+'</span>'); }else if((allNum-nowNum) == 2 && i==5) { $numA = $('<span>'+(allNum - 7 + i)+'</span>'); }else { $numA = $('<a href="#'+(allNum - 7 + i)+'">'+(allNum - 7 + i)+'</a>'); } }else { if(i == 4) { $numA = $('<span>'+(nowNum - 4 + i)+'</span>'); }else { $numA = $('<a href="#'+(nowNum - 4 + i)+'">'+(nowNum - 4 + i)+'</a>'); } } $pageNum.append($numA); } } // 下一页 if(nowNum >= 1) { if(nowNum == totalPage) { $numA = $('<span class="next-page">下一页</span>'); }else { $numA = $('<a class="next-page" href="#'+(nowNum+1)+'">下一页</a>'); } $pageNum.append($numA); } callBack(nowNum,allNum); }
// 点击页码 $("#page-num").on('click','a',function () { var nowNum = parseInt($(this).attr('href').substring(1)); $("#page-num").html(''); page({ id:'#page-num', nowNum:nowNum, allNum:totalPage }); return false; });
/* 分页 ----> 页面初始化时展示页码 * id: 页码盒子的id * nowNum: 现点击页码 * allNum: 总页码 * callback: 回调函数 * */ page({ id:'#page-num', nowNum:1, allNum:totalPage, callBack:function(now, all) { // 默认获取的是第一页的信息 } });