js实现分页插件,类似于京东的分页查询:

近期需要做一个平台,需要用到分页,

原型以及前端给的页面是纯html实现的,没有用到分页插件,于是就自己参照京东商品页的那种方式写了一个。1期先写死了 最多展示7个页签。后期考虑制作可定制化的。

源码如下:

vardefaultIndex=0;

varpageIndex=0;

varpageSize=20;

/*参数1:当前页,参数2:总页数,参数3:绑定查询函数,需要自定义实现,会传入查询页数和每页查询数*/

functionpageUtil(currentPage,totalPage,queryFunction){

varidx=0;

varpageIdxNum=0;//拥挤统计当前有几个页面标签,如果不足会补齐

currentPage++;

varpage='<上一页';

if(totalPage>7){

page+='1';

pageIdxNum++;

if((currentPage-2)>2){

page+='···';

pageIdxNum++;

}else if((currentPage-2)==2){

page+='2';

pageIdxNum++;

};

if((totalPage-currentPage)<3){

varvar1=totalPage-currentPage;

varvar3=4-var1;

while(var3>1){

idx=currentPage-var3;

page+=''+idx+'';

var3--;

pageIdxNum++;

}

}

if(currentPage>2&& currentPage<=totalPage){

idx=parseInt(currentPage)-1;

page+=''+idx+'';

pageIdxNum++;

}

if(currentPage>1&& currentPage!=totalPage ){

idx=parseInt(currentPage);

page+=''+idx+'';

pageIdxNum++;

}

if((currentPage+1)

idx=parseInt(currentPage)+1;

page+=''+idx+'';

pageIdxNum++;

}

while(pageIdxNum<5)//在最后2个标签之前,需要补足不全的页数

{

idx++;

page+=''+idx+'';

pageIdxNum++;

}

if((currentPage+3)==totalPage){

idx=totalPage-1;

page+=''+idx+'';

}else if((currentPage+3)

page+='···';

}

page+=''+totalPage+'';

}else{

varvar4=1;

while(var4<=totalPage){

page+=''+var4+'';

var4++;

}

}

page+='下一页>';

$("#uipage").html(page);

$.each($("#uipagea"),function(index,element){

$(this).removeClass('current');

varidx1=$(this).text();

if(idx1==currentPage){

$(this).addClass('current');

}

$(this).bind('click',function(){

varidx=$(this).text();

if(idx!='···'){

if($(this).attr('class')=='pre'){

pageIndex=(currentPage-1);

}else if($(this).attr('class')=='next'){

pageIndex=(currentPage+1);

}else{

pageIndex=idx;

}

}else{

if($(this).attr('class')=='more'){

pageIndex=(currentPage+2);

}else{

pageIndex=(currentPage-2);

}

}

queryFunction((pageIndex-1),pageSize);

});

});

if(currentPage==1){

$("#uipagea:eq(0)").off("click");

$("#uipagea:eq(0)").addClass("disable");

};

if(currentPage==totalPage || totalPage ==0){

$("#uipagea:last").off("click")

$("#uipagea:last").addClass("disable");

}

}



使用方法如下:

自己需要实现queryFunction(idx,pageNum)  参数1是第几页  参数2是每页展示数量:

demo:

function  queryFunction(idx,pageNum){

        ajax({

        .....略

    success:function(data){

。。。数据渲染

    pageUtil(currentPage,totalPage,queryFunction);//返回传入当前页,总页数,然后把自己查询这个函数传入进去,即可

。。。数据提取

    }

        })

}

你可能感兴趣的:(js实现分页插件,类似于京东的分页查询:)