`
xinyoulinglei
  • 浏览: 124140 次
社区版块
存档分类
最新评论

转载 主题:写了个Jquery异步分页插件

    博客分类:
  • java
阅读更多
主题:写了个Jquery异步分页插件
http://www.iteye.com/topic/1126433 作者:zhutianxiang
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:

Java代码 
1.<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  
2.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
3.<html xmlns="http://www.w3.org/1999/xhtml">  
4.  <head>  
5.    <title>异步分页</title>  
6.    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  
7.    <link href="../css/local.css" rel="stylesheet" type="text/css" />  
8.    <script type="text/javascript" src="../js/jquery-1.4.2.min.js"></script>  
9.    <script type="text/javascript" src="../js/asyn_page.js"></script>  
10.    <script type="text/javascript">  
11.    var totalRowSize = ${totalRowSize};  
12.    $(document).ready(function(){  
13.        $("#pageWidget").asynPage("/user/findUser_asyn.action","#tbody",buildHtml,totalRowSize);  
14.    });  
15.      
16.    //构建内容  
17.    function buildHtml(users){  
18.        $.each(users,function(i,user){  
19.            var tr = [  
20.                '<tr>',  
21.                  '<td>',user.userId,'</td>',  
22.                  '<td>',user.username,'</td>',  
23.                  '<td>',user.sex,'</td>',  
24.                  '<td>',user.age,'</td>',  
25.                  '<td>',user.email,'</td>',  
26.                  '<td>',user.address,'</td>',  
27.                  '<td>',user.registerTime,'</td>',  
28.                  '<td></td>',  
29.                '</tr>' 
30.            ].join('');  
31.            $("#tbody").append(tr);  
32.        });  
33.    }  
34.    </script>  
35.  </head>  
36.  <body>  
37.    <table>  
38.      <thead>  
39.        <tr>  
40.          <th>ID</th>  
41.          <th>用户名</th>  
42.          <th>性别</th>  
43.          <th>年龄</th>  
44.          <th>Email</th>  
45.          <th>地址</th>  
46.          <th>注册时间</th>  
47.          <th>操作</th>  
48.        </tr>  
49.      </thead>  
50.      <tbody id="tbody"></tbody>  
51.    </table>  
52.    <div id="pageWidget" class="page"></div>  
53.  </body>  
54.</html> 
<%@ 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()函数来具体构建分页内容的。

使用异步分页插件很简单,只要这么调用:

Js代码 
1.$("#pageWidget").asynPage("/user/findUser_asyn.action","#tbody",buildHtml,totalRowSize); 
$("#pageWidget").asynPage("/user/findUser_asyn.action","#tbody",buildHtml,totalRowSize); 这是最简化调用。还可以传额外查询参数,以及定制每页显示记录数,具体使用方式见插件的具体介绍。

下面是asynPage插件内容:

Js代码 
1./* 
2. * ===================AJAX异步分页================= 
3. *  
4. * Copyright 2012 8 23, zhutx 
5. *  
6. * 假设id为pageWidget的div是你放置分页控件的容器,则按如下形式调用: 
7. * $("#pageWidget").asynPage("/user/findUser_asyn.action","#tbody",buildHtml,totalRowSize,{"pageRowSize":10}); 
8. * 参数说明: 
9. * ------------Required----------- 
10. * 参数一:请求URL 
11. * 参数二:渲染结果集的页面容器 
12. * 参数三:负责渲染结果集到页面的函数 
13. * 参数四:总记录数 
14. * ------------Optional----------- 
15. * 参数五(json对象): 
16. * 属性pageRowSize:每页记录数(不配置,则默认为20) 
17. * 属性param:请求参数(json格式) 
18. */ 
19.(function($){  
20.    var settings;  
21.    var page;  
22.    var paramStr;  
23.      
24.    $.fn.asynPage = function(url,contentContainer,buildHtml_fun,totalRowSize,callerSettings){  
25.      
26.        settings = $.extend({  
27.            currPageNum:1,  
28.            pageRowSize:20,  
29.            param:null 
30.        },callerSettings||{});  
31.      
32.        settings.contentContainer = $(contentContainer);  
33.        settings.url = url;  
34.        settings.pageWidget = this;  
35.        settings.totalRowSize = totalRowSize;  
36.        settings.buildHtml_fun = buildHtml_fun;  
37.          
38.        page = new Page(settings.currPageNum,settings.totalRowSize,settings.pageRowSize);  
39.          
40.        paramStr = makeParamStr(settings.param);  
41.          
42.        //开始获取数据  
43.        fetchData(page.getCurrPageNum());  
44.          
45.        return this;  
46.    };  
47.      
48.    /* 将json转换为请求参数字符串 */ 
49.    var trunParamConfig2RequestParamStr = function(json){  
50.        var str = "";  
51.        for(key in json){  
52.            if(str==""){  
53.                str += key+"="+json[key];  
54.            }else{  
55.                str += "&"+key+"="+json[key];  
56.            }  
57.        }  
58.        return str;  
59.    };  
60.      
61.    /* 将配置参数拼接为请求字符串 */ 
62.    var makeParamStr = function(param_json){  
63.        if(param_json==null){  
64.            return "";  
65.        }else{  
66.            return trunParamConfig2RequestParamStr(param_json);  
67.        }  
68.    };  
69.      
70.    /*  
71.     * 负责获取后台数据,获取完毕后会触发构建分页控件 
72.     */ 
73.    var fetchData = function(currPageNum){  
74.          
75.        page.setCurrPageNum(currPageNum);  
76.        var firstResult = page.getFirstResult();  
77.        var maxResult = page.getMaxResult();  
78.        var pageRowSize = page.getPageRowSize();  
79.          
80.        var data = null;  
81.        if(paramStr){  
82.            data = paramStr + "&page.currPageNum="+currPageNum+"&page.pageRowSize="+pageRowSize+"&page.firstResult="+firstResult+"&page.maxResult="+maxResult;  
83.        }else{  
84.            data = "page.currPageNum="+currPageNum+"&page.pageRowSize="+pageRowSize+"&page.firstResult="+firstResult+"&page.maxResult="+maxResult;  
85.        }  
86.          
87.        $.ajax({  
88.            type :"POST",  
89.            url : settings.url,  
90.            data :data,  
91.            success :function(datas){  
92.                settings.contentContainer.empty();  
93.                settings.buildHtml_fun(datas);  
94.                buildPageWidget(page);//触发构建分页控件  
95.            },  
96.            error:function(xmlHttpRequest,textStatus,errorThrown){  
97.                if(textStatus == "error"){  
98.                    var error = eval('('+xmlHttpRequest.responseText+')');  
99.                    alert("Sorry:"+error.errorCode+","+error.message+"!");  
100.                }  
101.            }  
102.        });  
103.    };  
104.      
105.    var trunTargetPage = function(pageNum){  
106.        fetchData(pageNum);  
107.    }  
108.      
109.    /* 为分页控件绑定事件 */ 
110.    var bindEvent = function(){  
111.        var links = settings.pageWidget.find("a");  
112.        $.each(links,function(i,link){  
113.            var link = $(link);  
114.            var pageNum = link.attr("pageNum");  
115.            link.click(function(){  
116.                trunTargetPage(pageNum);  
117.            });  
118.        });  
119.    }  
120.      
121.    /* 构建分页控件的具体算法实现 */ 
122.    var buildPageWidget = function(page){  
123.          
124.        //构建分页控件前,先清理现有控件  
125.        settings.pageWidget.empty();  
126.          
127.        /* --------------- 下面开始进入真正的分页控件构建过程 -------------- */ 
128.          
129.        /* --------------- 1.开始:构建描述信息(如“共?页,?条记录”) ----------------- */ 
130.        settings.pageWidget.append("<div class='total'>共<span>"+page.getTotalPageNum()+"</span>页&nbsp;<span>"+page.getTotalRowSize()+"</span>条记录</div>");  
131.        settings.pageWidget.append("<ul>");  
132.        /* --------------- 1.结束:构建描述信息(如“共?页,?条记录”) ----------------- */ 
133.          
134.        /* --------------- 2.开始:构建“首页”和“上一页”控件 ------------- */ 
135.        var currPageNum = Number(page.getCurrPageNum());  
136.        var totalPageNum = Number(page.getTotalPageNum());  
137.          
138.        if(currPageNum==1){  
139.            //如果你希望当前页是第一页的时候,也允许“首页”和“上一页”控件出现,则可以在这里进行补充  
140.        }else{  
141.            settings.pageWidget.find("ul").append("<li><a id='' pageNum='1' href='javascript:void(0);' title='首页' class='first'>首页</a></li>");  
142.            settings.pageWidget.find("ul").append("<li><a id='' pageNum='"+(currPageNum-1)+"' href='javascript:void(0);' title='上一页' class='prev'>上一页</a></li>");  
143.        }  
144.        /* --------------- 2.结束:构建“首页”和“上一页”控件 ------------- */ 
145.          
146.        /* --------------- 3.开始:构建分页数字控件 -------------- */ 
147.        if(totalPageNum<10){  
148.            for(var i=1;i<=totalPageNum;i++){  
149.                if(i==currPageNum){  
150.                    settings.pageWidget.find("ul").append("<li><a id='' pageNum='"+i+"' href='javascript:void(0);' title='' class='current'>"+i+"</a></li>");  
151.                }else{  
152.                    settings.pageWidget.find("ul").append("<li><a id='' pageNum='"+i+"' href='javascript:void(0);' title='' class='javascript:trunTargetPage("+i+");'>"+i+"</a></li>");  
153.                }  
154.            }  
155.        //如果总页数>=10    
156.        }else{  
157.            //如果当前页小于5,则显示1-9项,且记忆当前项  
158.            if(currPageNum<5){  
159.                for(var i =1;i<10;i++){  
160.                    if(i==currPageNum){  
161.                        settings.pageWidget.find("ul").append("<li><a id='' pageNum='"+i+"' href='javascript:void(0);' title='' class='current'>"+i+"</a></li>");  
162.                    }else{  
163.                        settings.pageWidget.find("ul").append("<li><a id='' pageNum='"+i+"' href='javascript:void(0);' title='' class=''>"+i+"</a></li>");  
164.                    }  
165.                }  
166.            //如果当前页>=5,且总页数与当前页的差<4  
167.            }else if(totalPageNum-currPageNum<4){  
168.                for(var i=totalPageNum-8;i<=totalPageNum;i++){  
169.                    if(i==currPageNum){  
170.                        settings.pageWidget.find("ul").append("<li><a id='' pageNum='"+i+"' href='javascript:void(0);' title='' class='current'>"+i+"</a></li>");  
171.                    }else{  
172.                        settings.pageWidget.find("ul").append("<li><a id='' pageNum='"+i+"' href='javascript:void(0);' title='' class=''>"+i+"</a></li>");  
173.                    }  
174.                }  
175.            //如果当前页>=5,则显示围绕当前页的9项,且记忆当前项      
176.            }else{  
177.                for(var i=currPageNum-4;i<currPageNum+5;i++){  
178.                    if(i==currPageNum){  
179.                        settings.pageWidget.find("ul").append("<li><a id='' pageNum='"+i+"' href='javascript:void(0);' title='' class='current'>"+i+"</a></li>");  
180.                    }else{  
181.                        settings.pageWidget.find("ul").append("<li><a id='' pageNum='"+i+"' href='javascript:void("+i+");' title='' class=''>"+i+"</a></li>");  
182.                    }  
183.                }  
184.            }  
185.        }  
186.        /* --------------- 3.结束:构建分页数字控件 -------------- */ 
187.          
188.        /* --------------- 4.开始:构建“下一页”和“尾页”控件 ------------- */ 
189.        if(totalPageNum==currPageNum){  
190.            //如果你希望当前页是最后一页的时候,也允许“尾页”和“下一页”控件出现,则可以在这里进行补充  
191.        }else{  
192.            settings.pageWidget.find("ul").append("<li><a id='' pageNum='"+(currPageNum+1)+"' href='javascript:void(0);' title='下一页' class='next'>下一页</a></li>");  
193.            settings.pageWidget.find("ul").append("<li><a id='' pageNum='"+totalPageNum+"' href='javascript:void(0);' title='尾页' class='last'>尾页</a></li>");  
194.        }  
195.        /* --------------- 4.结束:构建“下一页”和“尾页”控件 ------------- */ 
196.          
197.        //还要为控件绑定点击事件  
198.        bindEvent();  
199.    }  
200.      
201.})(jQuery);  
202. 
203./* 
204. * Page类 
205. */ 
206.function Page(currPageNum,totalRowSize,pageRowSize){  
207.    this.currPageNum = currPageNum;  
208.    this.totalRowSize = totalRowSize;  
209.    this.pageRowSize = pageRowSize;  
210.}  
211.Page.prototype.getCurrPageNum = function(){  
212.    return this.currPageNum;  
213.};  
214.Page.prototype.setCurrPageNum = function(currPageNum){  
215.    this.currPageNum = currPageNum;  
216.};  
217.Page.prototype.getTotalPageNum = function(){  
218.    return (this.totalRowSize%this.pageRowSize==0)?(this.totalRowSize/this.pageRowSize):(Math.floor(this.totalRowSize/this.pageRowSize)+1);  
219.};  
220.Page.prototype.getTotalRowSize = function(){  
221.    return this.totalRowSize;  
222.};  
223.Page.prototype.setTotalRowSize = function(totalRowSize){  
224.    this.totalRowSize = totalRowSize;  
225.};  
226.Page.prototype.getPageRowSize = function(){  
227.    return this.pageRowSize;  
228.};  
229.Page.prototype.setPageRowSize = function(pageRowSize){  
230.    this.pageRowSize = pageRowSize;  
231.};  
232.Page.prototype.getFirstResult = function(){  
233.    if(this.getCurrPageNum()<=0) return 0;  
234.    return this.getPageRowSize() * (this.getCurrPageNum() - 1);  
235.};  
236.Page.prototype.getMaxResult = function(){  
237.    return this.getFirstResult() + this.getPageRowSize();  
238.}; 
/*
* ===================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>页&nbsp;<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();
};
分享到:
评论

相关推荐

    利用JQuery写一个简单的异步分页插件

    写了一个Jquery异步分页插件,拿出来分享一下,有不完善之处请指教。 以用户分页为例,先看一下效果,首先是第一页: 下一页或者点击第二页后: 点击尾页后: 效果还可以吧?来看看具体怎么用,首先后台要有一个...

    Jquery扩展插件,图片异步分页浏览

    Jquery扩展插件,图片异步分页浏览 Jquery扩展插件,图片异步分页浏览

    无刷新,异步分页插件

    使用方法和下载地址,请看:https://www.jq22.com/jquery-info22897

    jQuery插件简单学习实例教程

    (1)异步分页插件flexgrid 1)前台js &lt;&#37;@ page language=Java contentType=text/html; charset=utf-8 pageEncoding=utf-8%&gt; &lt;!DOCTYPE ...

    jQuery+ajax异步加载分页代码.zip

    有兴趣刚需的可以自己下载,非常实用的jquery代码,可以完美运行,有能力的还可以二次修改!

    JQuery Pagination AJax 分页实例 For ASP.NET(JQuery+ashx+ADO.NET 实体数据模型)

    采用JQuery Pagination 插件,服务器端采用asp.net ashx,数据库操作采用LinQ TO Entity,实现异步分页操作实例。 具体介绍,详见:http://hi.baidu.com/tz666/item/73a676d9b171041821e250b0

    jquery.pagination

    很好用的jQuery分页插件,实现异步分页

    博客 v1.2源码20121013

    用到的一些jquery插件: jquery.lazyload.js:图片预加载 jquery.pager.js:分页 jquery.dragsort.js:拖曳排序 jquery.ui.datepicker.js:日期控件 jquery.ad-gallery.js:相册 jquery.uploadify-3.1.js:多...

    php jquery 实现新闻标签分类与无刷新分页

    我一向是见招拆招的解决思路,这里需要运用到3个东西——标签页效果插件和分页插件,jquery的getJson请求。 因此我使用了jquery-ui插件,jquery-page插件,现提供下载地址:jquery_all.rar 里面包含了3个JS脚本文件...

    个人博客系统源码

    用到的一些jquery插件: jquery.lazyload.js:图片预加载 jquery.pager.js:分页 jquery.dragsort.js:拖曳排序 jquery.ui.datepicker.js:日期控件 jquery.ad-gallery.js:相册 jquery.uploadify-3.1.js:多...

    YQBlog - 基于Asp.Net MVC3 EF4.0技术的个人博客系统

    用到的一些jquery插件: jquery.lazyload.js:图片预加载 jquery.pager.js:分页 jquery.dragsort.js:拖曳排序 jquery.ui.datepicker.js:日期控件 jquery.ad-gallery.js:相册 jquery.uploadify-3.1.js:多...

    YQBlog个人博客系统源码201071

    用到的一些jquery插件: jquery.lazyload.js:图片预加载 jquery.pager.js:分页 jquery.dragsort.js:拖曳排序 jquery.ui.datepicker.js:日期控件 jquery.ad-gallery.js:相册 jquery.uploadify-3.1.js:多...

    Yqblog个人博客源码1.3.rar

    用到的一些jquery插件: jquery.lazyload.js:图片预加载 jquery.pager.js:分页 jquery.dragsort.js:拖曳排序 jquery.ui.datepicker.js:日期控件 jquery.ad-gallery.js:相册 jquery.uploadify-3.1.js:多...

    jQuery插件Zelect.zip

    特征:轻量没有 CSS 可自定义 异步分页加载大型选项列表 (read: AJAX-ready-and-enabled)再也个分离或隐藏的 DOM 节点初始化 编程方式可选且多变 Unit-tested代码示例:$('select').on('ready', function() { $('...

    10万条数据采用存储过程分页实现(Mvc+Dapper+存储过程)源码

    有时候大数据量进行查询操作的时候,查询速度很大强度上可以影响用户体验,因此自己简单写了一个demo,简单总结记录一下: ...两外一种采用 ajax异步加载分页 采用比较常用的jquery.pagination 分页插件。

    纯servlet+jsp后台管理 无任何框架

    前端用了jquery、jquery分页插件(懒得写)、layer弹层(实在不想自己写弹层了),因为不能用ajax,所以添加方法成功直接刷新列表,失败则跳到错误页面。servlet使用注解方式,另外一个servlet可以处理多个请求,...

    laypage.js分页插件使用方法详解

    本文实例为大家分享了laypage.js分页插件的使用方法,供大家参考,具体内容如下 1、引用依赖 a.layui.js b.layui.css c.laypage.js ... //以下将以jquery.ajax为例,演示一个异步分页 $.getJSON('../

    jquery-ias.min.zip

    Infinite Ajax Scroll 简称 ias,无限的ajax滚动,是一款jQuery滚动ajax分页插件,当页面滚动到容器可见部分将自动异步加载数据。

    jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)

    最近做一个AJAX的GridView来显示数据,当然按照现在流行的首选是Jquery。

Global site tag (gtag.js) - Google Analytics