好久没有更新内容了,因为我正在学习新的技术,最近公司业务突然繁忙,又开始更新最近写的东西了。
效果图如上。
DOM:
<div class="J_SelectPage module-pages-select" data-current-page="1" data-total-page="12"> <span class="prev-btn no-disable">上一页</span> <span class="pages-list"> </span> <span class="next-btn">下一页</span> <span class="pages-size">共<em><i>1</i>/<i>10</i></em>页</span> <span class="goto-page">到第<input type="text" value="1" />页<a href="javascript:void(0);">确定</a></span> </div>
参数说明:
data-current-page="1" 和 data-total-page="12",分别标示当前页和总的页数CSS:
.module-pages-select{height:20px; line-height:20px;color:#999;} .module-pages-select span{border-radius:5px;-webkit-border-radius:display:block;height:20px; float:left; margin:0 5px;} .module-pages-select .prev-btn,.module-pages-select .next-btn{border:1px solid #e6e6e6;cursor:pointer;padding:0 5px; color:#fa6e00;} .module-pages-select .no-disable{color:#ccc; cursor:default;} .module-pages-select .pages-list a{border-radius:5px;-webkit-border-radius:5px; display:block;height:20px;width:20px; text-align:center;float:left;margin:0 2px;border:1px solid #e6e6e6; color:#666;} .module-pages-select .pages-list a.selected{ background:#fce3c5;border-color:#fa6e00; color:#fa6e00;} .module-pages-select .pages-list b{ float:left; font-family:verdana;color:#999;} .module-pages-select span.pages-size{border:1px solid #fff;color:#999;} .module-pages-select span.pages-size i{font-style:normal;} .module-pages-select input{ position:relative;top:1px; margin:0 2px;width:20px;height:16px;_height:15px;*+height:15px;color:#999;border:1px solid #E6E6E6;border-radius:5px;-webkit-border-radius:5px; text-align:center;} .module-pages-select .goto-page a{color:#999;border:1px solid #E6E6E6; margin-left:5px; padding:1px 3px;*+padding:1px 3px 0;border-radius:5px;-webkit-border-radius:5px;}
可自由配置你的样式JS:
(function(){ //ajax分页插件 function SelectPage(args){ var $this$=this; //保存分页插件 this.pageBox=args.pageNode; //保存目标内容区域 this.insertBox=args.insertBox; //保存url this.pageUrl=args.pageUrl; //保存总页数 this.totalPageSize=parseInt(this.pageBox.attr("data-total-page")); //保存分页列表盒子 this.pageListBox=$(".pages-list",this.pageBox); //保存上下翻页按钮 this.prevBtn=$(".prev-btn",this.pageBox); this.nextBtn=$(".next-btn",this.pageBox); //初始化分页列表 this.initPageList(this.totalPageSize); //在pageBox添加click事件 this.pageListBox.click(function(e){ //如果总页数是小于等于5的,就直接发送请求,否则动态创建 if(e.target.tagName=="A"&&!$(e.target).hasClass("selected")){ var pageIndex=parseInt($(e.target).text()); //前往指定页码 $this$.gotoPage(pageIndex); }; }); //设置计数器的值 this.pageLoop=parseInt(this.pageBox.attr("data-current-page")); this.prevBtn.click(function(){ if(!$(this).hasClass("no-disable")){ $this$.pageLoop--; $this$.gotoPage($this$.pageLoop); }; }); this.nextBtn.click(function(){ if(!$(this).hasClass("no-disable")){ $this$.pageLoop++; $this$.gotoPage($this$.pageLoop); }; }); //获取当前页和总页的em节点 this.currentEmNode=$("i",this.pageBox).eq(0); this.totalEmNode=$("i",this.pageBox).eq(1).text(this.totalPageSize); /////////////////////////////////////////////////以下是添加跳到指定页的功能 this.gotoInput=$(".goto-page input",this.pageBox).val($this$.pageBox.attr("data-current-page")); this.gotoBtn=$(".goto-page a",this.pageBox); this.gotoInput.keyup(function(){ var curIndex=this.value; if(isNaN(curIndex)){//如果输入不是数就设置为当前页 this.value=$this$.pageListBox.find(".selected").text(); }else if(curIndex<1){ this.value=1; }else if(curIndex>$this$.totalPageSize){ this.value=$this$.totalPageSize; }; }); this.gotoBtn.click(function(){ var gotoIndex=parseInt($this$.gotoInput.val()), pageSelectedIndex=parseInt($this$.pageListBox.find(".selected").text()); if(gotoIndex!=pageSelectedIndex){ $this$.gotoPage(gotoIndex); }; }); /////////////////////////////////////////////////以上是添加跳到指定页的功能 }; SelectPage.prototype={ //发送页码 sendPage:function(pageIndex){ //alert(pageIndex); var _this=this; //发送页码 $.post(this.pageUrl,{currentPage:pageIndex},function(ret){ var htmlContent = ""; var data = ret['items']; for(var i=0;i<ret['items'].length;i++){ var pro = data[i]; htmlContent += "<tr><td>"+pro['title']+"</td><td>"+pro['message']+"</td><td><em>"+pro['points']+"</em></td><td><em>"+pro['fameValue']+"</em></td><td>"+pro['createDate']+"</td></tr>"; } //数据返回成功,先清楚内容 _this.insertBox.empty().html(htmlContent); },"json"); }, gotoPage:function(pageIndex){ var _this_=this; //如果总页数是小于等于5的就直接发送请求,否则发送请求的同时在动态创建分页 if(_this_.totalPageSize<=5){ _this_.sendPage(pageIndex); //切换相关样式 _this_.changeStyle(pageIndex); }else{ _this_.sendPage(pageIndex); //如果分页数大于5,就动态改变 _this_.addNewPageList(pageIndex) //切换相关样式 _this_.changeStyle(pageIndex); }; //设置计数器的值 this.pageLoop=pageIndex; //设置当前值 this.pageBox.attr("data-current-page",pageIndex); //设置实时页数 this.currentEmNode.text(pageIndex); //设置输入框的值 this.gotoInput.val(pageIndex); }, //重新创建分页列表 addNewPageList:function(pageIndex){ if(pageIndex<3){ //添加分页列表 this.addPageList(3,true,true); }else{ //添加分页列表 this.addPageList(3,true,true); //绘制区间 this.addMinToMaxPage(pageIndex); }; }, //绘制一个指定区间的分页 addMinToMaxPage:function(pageIndex){ //this.totalPageSize if(pageIndex==3){ for(var i=3;i<6;i++){ this.pageListBox.append("<a href='javascript:void(0);'>"+(i+1)+"</a>"); }; }else if(pageIndex==4){ for(var i=3;i<6;i++){ this.pageListBox.append("<a href='javascript:void(0);'>"+(i+1)+"</a>"); }; }else if(pageIndex==this.totalPageSize){ var ma=pageIndex==this.totalPageSize?this.totalPageSize:pageIndex-1; for(var i=this.totalPageSize-3;i<ma;i++){ this.pageListBox.append("<a href='javascript:void(0);'>"+(i+1)+"</a>"); }; }else{ var ma=pageIndex+1>this.totalPageSize?this.totalPageSize:pageIndex+1; for(var i=pageIndex-2;i<ma;i++){ this.pageListBox.append("<a href='javascript:void(0);'>"+(i+1)+"</a>"); }; }; }, //第一次初始化分页列表 initPageList:function(pageSize){ //当页数小于等于5的时候 if(pageSize<=5){ //添加分页列表 this.addPageList(pageSize,false); }else{ //添加分页列表 this.addPageList(3,true); }; }, //切换选中样式 changeStyle:function(currentIndex){ //切换当前页码样式 this.pageListBox.find("a:contains("+currentIndex+")").addClass("selected").siblings().removeClass("selected"); //切换上下按钮样式 if(currentIndex==1){ this.prevBtn.addClass("no-disable"); }else{ this.prevBtn.removeClass("no-disable"); }; if(currentIndex==this.totalPageSize){ this.nextBtn.addClass("no-disable"); }else{ this.nextBtn.removeClass("no-disable"); }; }, //指定添加几个分页 addPageList:function(length,isAddPoint,isEmpty){ if(isEmpty){//知道添加前是否清楚原来的 this.pageListBox.empty() }; for(var i=0;i<length;i++){ if(i==0){ this.pageListBox.append("<a href='javascript:void(0);' class='selected'>"+(i+1)+"</a>"); }else{ this.pageListBox.append("<a href='javascript:void(0);'>"+(i+1)+"</a>"); }; }; if(isAddPoint){ this.pageListBox.append("<b>...</b>"); }; } }; window["SelectPage"]=SelectPage; })();
使用方式:
1,引入JQ和对应的css和js代码;
调用方法:
$(function(){ /*创建一个分页*/ var selectPage=new SelectPage({ pageNode:$(".J_SelectPage").eq(0),//这里传入一个分页节点对象 insertBox:$("#pageContetReload"),//这里传入一个需要插入内容的目标 pageUrl:"http://www.pinzhi365.com"//这里是请求的url }); });
来源:https://www.cnblogs.com/yangliulang/p/3393859.html