1.情境分析
近期在項目中很多地方都用到了分頁查詢,今天筆者就前端的Jquery外掛程式實現分頁詳細地跟大家講解下,希望能協助到需要的各位。 2.實現方案
①page.css樣式代碼
.page{ list-style: none; } .page>li{ float: left; padding: 5px 10px; cursor: pointer; } .page .pageItem{ border: solid thin #DDDDDD; margin: 5px; } .page .pageItemActive{ border: solid thin #0099FF; margin: 5px; background-color: #0099FF; color:white; } .page .pageItem:hover{ border: solid thin #0099FF; background-color: #0099FF; color:white; } .page .pageItemDisable{ border: solid thin #DDDDDD; margin: 5px; background-color: #DDDDDD; } ②page.js動效代碼
/** * Created by zhangxing on 2017/4/26. */ var page = { "pageId":"", "data":null, "maxshowpageitem":5,//最多顯示的頁碼個數 "pagelistcount":10,//每一頁顯示的內容條數 "init":function(listCount,currentPage,options){ this.data=options.data, this.pageId=options.id, this.maxshowpageitem=options.maxshowpageitem,//最多顯示的頁碼個數 this.pagelistcount=options.pagelistcount//每一頁顯示的內容條數 page.initPage(listCount,currentPage); }, /** * 初始化資料處理 * @param listCount 列表總量 * @param currentPage 當前頁 */ "initPage":function(listCount,currentPage){ var maxshowpageitem = page.maxshowpageitem; if(maxshowpageitem!=null&&maxshowpageitem>0&&maxshowpageitem!=""){ page.maxshowpageitem = maxshowpageitem; } var pagelistcount = page.pagelistcount; if(pagelistcount!=null&&pagelistcount>0&&pagelistcount!=""){ page.pagelistcount = pagelistcount; } page.pagelistcount=pagelistcount; if(listCount<0){ listCount = 0; } if(currentPage<=0){ currentPage=1; } page.setPageListCount(listCount,currentPage); }, /** * 初始化分頁介面 * @param listCount 列表總量 */ "initWithUl":function(listCount,currentPage){ var pageCount = 1; if(listCount>=0){ var pageCount = listCount%page.pagelistcount>0?parseInt(listCount/page.pagelistcount)+1:parseInt(listCount/page.pagelistcount); } var appendStr = page.getPageListModel(pageCount,currentPage); $("#"+page.pageId).html(appendStr); }, /** * 設定列表總量和當前頁碼 * @param listCount 列表總量 * @param currentPage 當前頁碼 */ "setPageListCount":function(listCount,currentPage){ listCount = parseInt(listCount); currentPage = parseInt(currentPage); page.initWithUl(listCount,currentPage); page.initPageEvent(listCount); page.viewPage(currentPage,listCount,page.pagelistcount,page.data)// fun(currentPage); }, //頁面顯示功能 "viewPage":function (currentPage,listCount,pagelistcount,data){ var NUM=listCount%pagelistcount==0?listCount/pagelistcount:parseInt(listCount/pagelistcount)+1; if(currentPage==NUM){ var result=data.slice((currentPage-1)* pagelistcount,data.length); } else{ var result=data.slice((currentPage-1)*pagelistcount,(currentPage-1)*pagelistcount+pagelistcount); } options.callBack(result); }, "initPageEvent":function(listCount){ $("#"+page.pageId +">li[class='pageItem']").on("click",function(){ page.setPageListCount(listCount,$(this).attr("page-data"),page.fun); }); }, "getPageListModel":function(pageCount,currentPage){ var prePage = currentPage-1; var nextPage = currentPage+1; var prePageClass ="pageItem"; var nextPageClass = "pageItem"; if(prePage<=0){ prePageClass="pageItemDisable"; } if(nextPage>pageCount){ nextPageClass="pageItemDisable"; } var appendStr =""; appendStr+="<li class='"+prePageClass+"' page-data='1' page-rel='firstpage'>首頁</li>"; appendStr+="<li class='"+prePageClass+"' page-data='"+prePage+"' page-rel='prepage'><上一頁</li>"; var miniPageNumber = 1; if(currentPage-parseInt(page.maxshowpageitem/2)>0&¤tPage+parseInt(page.maxshowpageitem/2)<=pageCount){ miniPageNumber = currentPage-parseInt(page.maxshowpageitem/2); }else if(currentPage-parseInt(page.maxshowpageitem/2)>0&¤tPage+parseInt(page.maxshowpageitem/2)>pageCount){ miniPageNumber = pageCount-page.maxshowpageitem+1; if(miniPageNumber<=0){ miniPageNumber=1; } } var showPageNum = parseInt(page.maxshowpageitem); if(pageCount<showPageNum){ showPageNum = pageCount; } for(var i=0;i<showPageNum;i++){ var pageNumber = miniPageNumber++; var itemPageClass = "pageItem"; if(pageNumber==currentPage){ itemPageClass = "pageItemActive"; } appendStr+="<li class='"+itemPageClass+"' page-data='"+pageNumber+"' page-rel='itempage'>"+pageNumber+"</li>"; } appendStr+="<li class='"+nextPageClass+"' page-data='"+nextPage+"' page-rel='nextpage'>下一頁></li>"; appendStr+="<li class='"+nextPageClass+"' page-data='"+pageCount+"' page-rel='lastpage'>尾頁</li>"; return appendStr; } } ③首頁面query.html代碼
<!DOCTYPE html><html><head><meta charset="utf-8"><title>ECharts</title><!-- 引入 echarts.js --><link rel="stylesheet" href="css/gongchang-style.css" /><link href="css/page.css" type="text/css" rel="stylesheet"/><script src="http://www.jq22.com/jquery/jquery-1.10.2.js"></script><script type="text/javascript" src="js/page.js"></script><script type="text/javascript" src="js/jQuery.js"></script><script src="js/echarts.js"></script></head><body onload="initdata()"><div><div class="grid-wrap"><div><input type="text" id="nicheng" placeholder="搜尋"><input type="button" onclick="search()" value="搜尋"></div><div class="grid" id="grid1"><div class="grid-header" id="grid1"><span class="row-1">姓名</span><span class="row-1">年齡</span><span class="row-1">性別</span><span class="row-1">手機號碼</span><span class="row-1">居住地址</span></div><div class="grid-body"><!-- <div class="grid-item"><span class="row-1">zhangxing</span><span class="row-1">24</span><span class="row-1">男</span><span class="row-1">18772351259</span><span class="row-1">浙江西湖</span></div><div class="grid-item"><span class="row-1">lisishan</span><span class="row-1">23</span><span class="row-1">女</span><span class="row-1">17682317584</span><span class="row-1">浙江餘杭</span></div> --></div></div></div><!--分頁外掛程式--><div class="page" id="page"></div></div><script type="text/javascript"> var options; /**初始函數 * [initdata description] * @return {[type]} [description] */ function initdata(){ alert("進來了"); $.ajax({ type: "get", url: "http://localhost:8080/userInfo/getUserInfo", success: function(data, textStatus){ alert(data.userInfoList[1].username); if(data.status == 1){ var datas = data.userInfoList; alert(datas); options={ "id":"page",//顯示頁碼的元素 "data":datas,//顯示資料 "maxshowpageitem":5,//最多顯示的頁碼個數 "pagelistcount":3,//每頁顯示資料個數 "callBack":function(result){ alert(result); var cHtml=""; for(var i=0;i<result.length;i++){ cHtml+='<div class="grid-item">\<span class="row-1">'+result[i].username+'</span>\<span class="row-1">'+result[i].age+'</span>\<span class="row-1">'+result[i].sex+'</span>\<span class="row-1">'+result[i].phone+'</span>\<span class="row-1">'+result[i].address+'</span>\</div>' } $(".grid-body").html(cHtml); } }; page.init(datas.length,1,options); } }, complete: function(XMLHttpRequest, textStatus){ }, error: function(){