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);//返回传入当前页,总页数,然后把自己查询这个函数传入进去,即可

。。。数据提取

    }

        })

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,352评论 0 33
  • 本篇文章是一篇Vue.js的教程,目标在于用一种常见的业务场景——分页/无限加载,帮助读者更好的理解Vue.js中...
    ElToro阅读 9,604评论 0 44
  • 我们是不是每天忙到焦头烂额,仍然感觉有大堆的事情没有处理。《明天的你一定感谢今天的自己:时间掌控术》这本书告...
    风里雨里我等你阅读 2,548评论 0 2
  • 之前自学的时候也使用过echarts来制作柱状图,折线图,地图,现在想想那时候做的简直是太LOW了,就是简单的在官...
    _信仰zmh阅读 82,569评论 23 66
  • 我们每个人都知道自己会死,但那日子好像还遥遥无期,以至于我们并不时常考虑这件事情,甚至由于死亡太过可怕而逼迫自己忽...
    _KD阅读 8,469评论 0 0