亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

利用JQuery寫一個簡單的異步分頁插件

2019-11-20 10:26:17
字體:
來源:轉載
供稿:網友

寫了一個Jquery異步分頁插件,拿出來分享一下,有不完善之處請指教。
以用戶分頁為例,先看一下效果,首先是第一頁:

下一頁或者點擊第二頁后:

點擊尾頁后:

效果還可以吧?來看看具體怎么用,首先后臺要有一個Page模型:
Page.java:

public class Page {    /**   * 當前頁號   */  private int currPageNum = 1;      /**   * 總記錄數   */  private int totalRowSize = 0;    /**   * 每頁記錄數   */  private int pageRowSize = 10;    public int getCurrPageNum() {   return currPageNum;  }   public void setCurrPageNum(int currPageNum) {   this.currPageNum = currPageNum;  }   public int getTotalPageNum() {   int total = (totalRowSize%pageRowSize==0)?(totalRowSize/pageRowSize):(totalRowSize/pageRowSize+1);   return total;  }   public int getTotalRowSize() {   return totalRowSize;  }   public void setTotalRowSize(int totalRowSize) {   this.totalRowSize = totalRowSize;  }   public int getPageRowSize() {   return pageRowSize;  }   public void setPageRowSize(int pageRowSize) {   this.pageRowSize = pageRowSize;  }   public int getFirstResult(){   if(getCurrPageNum()<=0) return 0;      return getPageRowSize() * (getCurrPageNum() - 1);  }   public int getMaxResult() {   return this.getFirstResult()+this.getPageRowSize();  }   }  

然后看list_user.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">  <head>  <title>異步分頁</title>  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  <link href="../css/local.css" rel="stylesheet" type="text/css" />  <script type="text/javascript" src="../js/jquery-1.4.2.min.js"></script>  <script type="text/javascript" src="../js/asyn_page.js"></script>  <script type="text/javascript">  var totalRowSize = ${totalRowSize};  $(document).ready(function(){   $("#pageWidget").asynPage("/user/findUser_asyn.action","#tbody",buildHtml,totalRowSize);  });    //構建內容  function buildHtml(users){   $.each(users,function(i,user){    var tr = [     '<tr>',      '<td>',user.userId,'</td>',      '<td>',user.username,'</td>',      '<td>',user.sex,'</td>',      '<td>',user.age,'</td>',      '<td>',user.email,'</td>',      '<td>',user.address,'</td>',      '<td>',user.registerTime,'</td>',      '<td></td>',     '</tr>'    ].join('');    $("#tbody").append(tr);   });  }  </script>  </head>  <body>  <table>   <thead>   <tr>    <th>ID</th>    <th>用戶名</th>    <th>性別</th>    <th>年齡</th>    <th>Email</th>    <th>地址</th>    <th>注冊時間</th>    <th>操作</th>   </tr>   </thead>   <tbody id="tbody"></tbody>  </table>  <div id="pageWidget" class="page"></div>  </body> </html> 

 可以看到id為tbody的元素是作為分頁內容展示容器,id為pageWidget的元素作為分頁控件展示容器。
然后提供了一個buildHtml()函數來具體構建分頁內容的。
使用異步分頁插件很簡單,只要這么調用:

$("#pageWidget").asynPage("/user/findUser_asyn.action","#tbody",buildHtml,totalRowSize); 

 這是最簡化調用。還可以傳額外查詢參數,以及定制每頁顯示記錄數,具體使用方式見插件的具體介紹。
下面是asynPage插件內容:

/*  * ===================AJAX異步分頁=================  *  * Copyright 2012 8 23, zhutx  *  * 假設id為pageWidget的div是你放置分頁控件的容器,則按如下形式調用:  * $("#pageWidget").asynPage("/user/findUser_asyn.action","#tbody",buildHtml,totalRowSize,{"pageRowSize":10});  * 參數說明:  * ------------Required-----------  * 參數一:請求URL  * 參數二:渲染結果集的頁面容器  * 參數三:負責渲染結果集到頁面的函數  * 參數四:總記錄數  * ------------Optional-----------  * 參數五(json對象):  * 屬性pageRowSize:每頁記錄數(不配置,則默認為20)  * 屬性param:請求參數(json格式)  */ (function($){  var settings;  var page;  var paramStr;    $.fn.asynPage = function(url,contentContainer,buildHtml_fun,totalRowSize,callerSettings){     settings = $.extend({    currPageNum:1,    pageRowSize:20,    param:null   },callerSettings||{});     settings.contentContainer = $(contentContainer);   settings.url = url;   settings.pageWidget = this;   settings.totalRowSize = totalRowSize;   settings.buildHtml_fun = buildHtml_fun;      page = new Page(settings.currPageNum,settings.totalRowSize,settings.pageRowSize);      paramStr = makeParamStr(settings.param);      //開始獲取數據   fetchData(page.getCurrPageNum());      return this;  };    /* 將json轉換為請求參數字符串 */  var trunParamConfig2RequestParamStr = function(json){   var str = "";   for(key in json){    if(str==""){     str += key+"="+json[key];    }else{     str += "&"+key+"="+json[key];    }   }   return str;  };    /* 將配置參數拼接為請求字符串 */  var makeParamStr = function(param_json){   if(param_json==null){    return "";   }else{    return trunParamConfig2RequestParamStr(param_json);   }  };    /*   * 負責獲取后臺數據,獲取完畢后會觸發構建分頁控件   */  var fetchData = function(currPageNum){      page.setCurrPageNum(currPageNum);   var firstResult = page.getFirstResult();   var maxResult = page.getMaxResult();   var pageRowSize = page.getPageRowSize();      var data = null;   if(paramStr){    data = paramStr + "&page.currPageNum="+currPageNum+"&page.pageRowSize="+pageRowSize+"&page.firstResult="+firstResult+"&page.maxResult="+maxResult;   }else{    data = "page.currPageNum="+currPageNum+"&page.pageRowSize="+pageRowSize+"&page.firstResult="+firstResult+"&page.maxResult="+maxResult;   }      $.ajax({    type :"POST",    url : settings.url,    data :data,    success :function(datas){     settings.contentContainer.empty();     settings.buildHtml_fun(datas);     buildPageWidget(page);//觸發構建分頁控件    },    error:function(xmlHttpRequest,textStatus,errorThrown){     if(textStatus == "error"){      var error = eval('('+xmlHttpRequest.responseText+')');      alert("Sorry:"+error.errorCode+","+error.message+"!");     }    }   });  };    var trunTargetPage = function(pageNum){   fetchData(pageNum);  }    /* 為分頁控件綁定事件 */  var bindEvent = function(){   var links = settings.pageWidget.find("a");   $.each(links,function(i,link){    var link = $(link);    var pageNum = link.attr("pageNum");    link.click(function(){     trunTargetPage(pageNum);    });   });  }    /* 構建分頁控件的具體算法實現 */  var buildPageWidget = function(page){      //構建分頁控件前,先清理現有控件   settings.pageWidget.empty();      /* --------------- 下面開始進入真正的分頁控件構建過程 -------------- */      /* --------------- 1.開始:構建描述信息(如“共?頁,?條記錄”) ----------------- */   settings.pageWidget.append("<div class='total'>共<span>"+page.getTotalPageNum()+"</span>頁 <span>"+page.getTotalRowSize()+"</span>條記錄</div>");   settings.pageWidget.append("<ul>");   /* --------------- 1.結束:構建描述信息(如“共?頁,?條記錄”) ----------------- */      /* --------------- 2.開始:構建“首頁”和“上一頁”控件 ------------- */   var currPageNum = Number(page.getCurrPageNum());   var totalPageNum = Number(page.getTotalPageNum());      if(currPageNum==1){    //如果你希望當前頁是第一頁的時候,也允許“首頁”和“上一頁”控件出現,則可以在這里進行補充   }else{    settings.pageWidget.find("ul").append("<li><a id='' pageNum='1' href='javascript:void(0);' title='首頁' class='first'>首頁</a></li>");    settings.pageWidget.find("ul").append("<li><a id='' pageNum='"+(currPageNum-1)+"' href='javascript:void(0);' title='上一頁' class='prev'>上一頁</a></li>");   }   /* --------------- 2.結束:構建“首頁”和“上一頁”控件 ------------- */      /* --------------- 3.開始:構建分頁數字控件 -------------- */   if(totalPageNum<10){    for(var i=1;i<=totalPageNum;i++){     if(i==currPageNum){      settings.pageWidget.find("ul").append("<li><a id='' pageNum='"+i+"' href='javascript:void(0);' title='' class='current'>"+i+"</a></li>");     }else{      settings.pageWidget.find("ul").append("<li><a id='' pageNum='"+i+"' href='javascript:void(0);' title='' class='javascript:trunTargetPage("+i+");'>"+i+"</a></li>");     }    }   //如果總頁數>=10   }else{    //如果當前頁小于5,則顯示1-9項,且記憶當前項    if(currPageNum<5){     for(var i =1;i<10;i++){      if(i==currPageNum){       settings.pageWidget.find("ul").append("<li><a id='' pageNum='"+i+"' href='javascript:void(0);' title='' class='current'>"+i+"</a></li>");      }else{       settings.pageWidget.find("ul").append("<li><a id='' pageNum='"+i+"' href='javascript:void(0);' title='' class=''>"+i+"</a></li>");      }     }    //如果當前頁>=5,且總頁數與當前頁的差<4    }else if(totalPageNum-currPageNum<4){     for(var i=totalPageNum-8;i<=totalPageNum;i++){      if(i==currPageNum){       settings.pageWidget.find("ul").append("<li><a id='' pageNum='"+i+"' href='javascript:void(0);' title='' class='current'>"+i+"</a></li>");      }else{       settings.pageWidget.find("ul").append("<li><a id='' pageNum='"+i+"' href='javascript:void(0);' title='' class=''>"+i+"</a></li>");      }     }    //如果當前頁>=5,則顯示圍繞當前頁的9項,且記憶當前項     }else{     for(var i=currPageNum-4;i<currPageNum+5;i++){      if(i==currPageNum){       settings.pageWidget.find("ul").append("<li><a id='' pageNum='"+i+"' href='javascript:void(0);' title='' class='current'>"+i+"</a></li>");      }else{       settings.pageWidget.find("ul").append("<li><a id='' pageNum='"+i+"' href='javascript:void("+i+");' title='' class=''>"+i+"</a></li>");      }     }    }   }   /* --------------- 3.結束:構建分頁數字控件 -------------- */      /* --------------- 4.開始:構建“下一頁”和“尾頁”控件 ------------- */   if(totalPageNum==currPageNum){    //如果你希望當前頁是最后一頁的時候,也允許“尾頁”和“下一頁”控件出現,則可以在這里進行補充   }else{    settings.pageWidget.find("ul").append("<li><a id='' pageNum='"+(currPageNum+1)+"' href='javascript:void(0);' title='下一頁' class='next'>下一頁</a></li>");    settings.pageWidget.find("ul").append("<li><a id='' pageNum='"+totalPageNum+"' href='javascript:void(0);' title='尾頁' class='last'>尾頁</a></li>");   }   /* --------------- 4.結束:構建“下一頁”和“尾頁”控件 ------------- */      //還要為控件綁定點擊事件   bindEvent();  }   })(jQuery);  /*  * Page類  */ function Page(currPageNum,totalRowSize,pageRowSize){  this.currPageNum = currPageNum;  this.totalRowSize = totalRowSize;  this.pageRowSize = pageRowSize; } Page.prototype.getCurrPageNum = function(){  return this.currPageNum; }; Page.prototype.setCurrPageNum = function(currPageNum){  this.currPageNum = currPageNum; }; Page.prototype.getTotalPageNum = function(){  return (this.totalRowSize%this.pageRowSize==0)?(this.totalRowSize/this.pageRowSize):(Math.floor(this.totalRowSize/this.pageRowSize)+1); }; Page.prototype.getTotalRowSize = function(){  return this.totalRowSize; }; Page.prototype.setTotalRowSize = function(totalRowSize){  this.totalRowSize = totalRowSize; }; Page.prototype.getPageRowSize = function(){  return this.pageRowSize; }; Page.prototype.setPageRowSize = function(pageRowSize){  this.pageRowSize = pageRowSize; }; Page.prototype.getFirstResult = function(){  if(this.getCurrPageNum()<=0) return 0;  return this.getPageRowSize() * (this.getCurrPageNum() - 1); }; Page.prototype.getMaxResult = function(){  return this.getFirstResult() + this.getPageRowSize(); }; 

以上就是本文的全部內容,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品第2页| 91国内揄拍国内精品对白| 国产欧美日韩精品丝袜高跟鞋| 欧美亚洲激情在线| 日韩中文字幕国产| 欧美精品激情在线观看| 在线免费观看羞羞视频一区二区| 国产精品福利小视频| 欧美亚洲激情视频| 一本色道久久88综合日韩精品| 成人av在线亚洲| 国产精品爽爽爽| 亚洲天堂免费在线| 亚洲第一网站免费视频| 亚洲一区第一页| 日韩av电影中文字幕| 亚洲精品视频免费在线观看| 久久久精品亚洲| 国产精品丝袜久久久久久不卡| 国产精品亚洲网站| 成人在线小视频| 亚洲成人激情图| 热re91久久精品国99热蜜臀| 3344国产精品免费看| 欧美日韩国产一区中文午夜| 亚洲成人亚洲激情| 久久久精品视频成人| 日韩欧美成人网| 欧美最顶级丰满的aⅴ艳星| 亚洲成色777777女色窝| 亚洲欧美日韩网| 日韩欧美主播在线| 国产精品自拍网| 亚洲成人精品视频| 国产精品久久不能| 亚洲美女精品成人在线视频| 欧美亚洲视频一区二区| 久久久久亚洲精品| 一本一本久久a久久精品综合小说| 国产精品96久久久久久又黄又硬| 一区二区三区www| 日韩欧美在线视频免费观看| 欧美激情极品视频| 亚洲黄在线观看| 久久久久久噜噜噜久久久精品| 亚洲人成亚洲人成在线观看| 夜色77av精品影院| 久久久久久久久久久成人| 狠狠躁天天躁日日躁欧美| 国产精品亚洲美女av网站| 欧美精品videossex性护士| 91在线播放国产| 成人性教育视频在线观看| 欧美精品生活片| 亚洲人成网7777777国产| 久久电影一区二区| 日韩大陆毛片av| 国产精品2018| xxxx性欧美| 亚洲精品资源美女情侣酒店| 一区二区三区动漫| 日韩欧美在线观看视频| 欧美亚洲伦理www| 国产成人+综合亚洲+天堂| 国产精品久久电影观看| 国产精品三级久久久久久电影| 伊人一区二区三区久久精品| 亚洲激情成人网| 高清欧美电影在线| 精品久久久久久久久久| 国产精品扒开腿做爽爽爽的视频| 日韩成人中文电影| 日韩国产高清视频在线| 国产精品成人一区| 一本色道久久综合亚洲精品小说| 久久中文字幕视频| 成人a在线视频| 亚洲韩国欧洲国产日产av| 亚洲国产私拍精品国模在线观看| 久久综合久久美利坚合众国| 精品国产拍在线观看| 成人性教育视频在线观看| 欧美性猛交xxxx乱大交蜜桃| 精品久久中文字幕| 精品久久香蕉国产线看观看亚洲| 国产精品成人一区| 国产精品久久久久91| 亚洲国产精品va在看黑人| 韩曰欧美视频免费观看| 国产噜噜噜噜久久久久久久久| 日本最新高清不卡中文字幕| 日韩av片免费在线观看| 欧美精品videosex性欧美| 欧美日韩人人澡狠狠躁视频| 国产精品美女久久久免费| 国产欧美一区二区三区久久| 欧美一级大片在线免费观看| 国产日韩av在线| 色婷婷久久av| 欧美老女人性生活| 欧美亚洲一区在线| 日韩在线播放av| 欧美一区二区三区图| 永久555www成人免费| 国产91在线高潮白浆在线观看| 国产精品99久久久久久www| 久久久国产视频| 国产va免费精品高清在线| 亚洲欧美制服第一页| 成人国产精品久久久久久亚洲| 亚洲国产精品久久久久秋霞不卡| 欧美韩日一区二区| 色先锋久久影院av| 日韩av在线导航| 久久久久久九九九| 91干在线观看| 国内偷自视频区视频综合| 中国日韩欧美久久久久久久久| 欧美激情伊人电影| 黑人巨大精品欧美一区二区三区| 日韩激情片免费| 91精品啪aⅴ在线观看国产| 在线视频欧美性高潮| 日韩在线一区二区三区免费视频| 国产精品久久久久久久久免费看| 高跟丝袜一区二区三区| 亚洲精品一区av在线播放| 伊人久久大香线蕉av一区二区| 亚洲激情视频在线播放| 欧美体内谢she精2性欧美| 亚洲国产中文字幕在线观看| 日韩视频免费观看| 欧美国产日韩一区二区| 精品一区二区三区三区| 欧美午夜性色大片在线观看| 久久久久久亚洲| 永久免费看mv网站入口亚洲| 欧美高清性猛交| 亚洲japanese制服美女| 欧美高清无遮挡| 国产婷婷97碰碰久久人人蜜臀| 国产女人精品视频| 国产精品专区第二| 中文字幕视频一区二区在线有码| 国产aⅴ夜夜欢一区二区三区| 亚洲欧美一区二区三区久久| 欧美电影第一页| 亚洲精品美女在线观看| 一区二区三区无码高清视频| 亚洲国产天堂久久综合| 欧美激情亚洲激情| 97激碰免费视频| 永久免费精品影视网站| 一区二区日韩精品| 美女性感视频久久久| 久久av资源网站| 亚洲综合中文字幕在线观看| 97超碰国产精品女人人人爽| 亚洲精品一区中文字幕乱码| 日韩精品免费综合视频在线播放| 日韩欧美精品在线观看| 亚洲 日韩 国产第一| 日韩黄在线观看| 国产精品福利久久久|