特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过。如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/mao2080/

1、效果示例

2、代码样式

/*
* 基于jquery 分页插件
* by mao2080@sina.com
*/
$(function (){
window.pageUtil = {
/**
* 构建分页
* @param {Object} divId 要绑定的容器
* @param {Object} data 查询数据
* @param {Object} args 参数信息
*/
page : function(divId, data, args){
var pager = $(divId);
var pageInfo = (!data || !data.data)?{"currPage":0,"pageSize":10,"pageTotal":0,"recordTotal":0,"prevPage":0,"nextPage":0,"firstPage":0,"lastPage":0}:data.data;
pageInfo.pageTotal = this.getPageTotal(pageInfo);
var html = "<table><tbody><tr>";
if(!args.hidePageSelect){
html+='<td>显示行数</td>';
html+='<td>';
if(!args.pageSelect){
html+=this.getPageSelect([10, 20, 50],pageInfo.pageSize);
}else{
html+=this.getPageSelect(args.pageSelect, pageInfo.pageSize);
}
html+='</td>';
}
html+='<td>共'+pageInfo.pageTotal+'页,</td>';
html+='<td>转到</td><td><input type="text" value="'+pageInfo.currPage+'" size="5" class="page-turn"></td>';
html+='<td>页 第'+this.getRowRange(pageInfo)+'项</td>';
html+='<td>,共'+pageInfo.recordTotal+'项</td>';
html+='<td>';
if(pageInfo.currPage == 1){
html+='<input type="button" value="Prev" class="page-prev page-button-disable">';
}else{
html+='<input type="button" value="Prev" class="page-prev">';
}
if(pageInfo.currPage == pageInfo.pageTotal){
html+='<input type="button" value="Next" class="page-next page-button-disable">';
}else{
html+='<input type="button" value="Next" class="page-next">';
}
html+='</td>';
html+='</tr></tbody></table>';
pager.html(html);
pager.find(".page-select").off("change").bind("change", function(){
if(args.query){
args.query(1, $(this).val());
}
});
pager.find(".page-turn").off("keypress").bind("keypress", function(event){
if(event.keyCode == "13" && args.query){
var pages = $(this).val();
if(/^\+?[1-9][0-9]*$/.test(pages) && (pages*1> 0 && pages*1 <= pageInfo.pageTotal)){
args.query(pages, pageInfo.pageSize);
}else{
alert("请输入1~"+pageInfo.pageTotal+"的数字.");
}
}
});
pager.find(".page-prev").off("click").bind("click", function(){
if(args.query && !$(this).hasClass("page-button-disable")){
args.query(pageInfo.currPage-1, pageInfo.pageSize);
}
});
pager.find(".page-next").off("click").bind("click", function(){
if(args.query && !$(this).hasClass("page-button-disable")){
args.query(pageInfo.currPage+1, pageInfo.pageSize);
}
});
},
/**
* 获取总页数
* @param {Object} data
*/
getPageTotal : function(data){
if(data.recordTotal == 0){
return 0;
}
if(data.recordTotal%data.pageSize == 0){
return data.recordTotal/data.pageSize;
}else{
return parseInt(data.recordTotal/data.pageSize)+1;
}
},
/**
* 获取当前数据行数范围
* @param {Object} data
*/
getRowRange : function(data){
if(data.recordTotal == 0){
return "0-0";
}
if(data.currPage < data.pageTotal){
return ((data.currPage-1)*data.pageSize+1)+"-"+(data.currPage)*data.pageSize;
}else{
return ((data.currPage-1)*data.pageSize+1)+"-"+(data.recordTotal);
}
},
/**
* 构建分页下拉框
* @param {Object} pageSelect 分页条数
* @param {Object} pageSize 一页大小
*/
getPageSelect : function(pageSelect, pageSize){
var pageSel = '<select class="page-select">';
for(var i in pageSelect){
if(pageSelect[i] == pageSize){
pageSel+="<option selected='selected' value="+pageSelect[i]+">"+pageSelect[i]+"</option>";
}else{
pageSel+="<option value="+pageSelect[i]+">"+pageSelect[i]+"</option>";
}
}
return pageSel+"</select>";
}
};
});

3、资料下载

page-demo.rar

一款基于jQuery的分页插件的更多相关文章

  1. 12款优秀 jQuery Ajax 分页插件和教程

    12款优秀 jQuery Ajax 分页插件和教程 在这篇文章中,我为大家收集了12个基于 jQuery 框架的 Ajax 分页插件,这些插件都提供了详细的使用教程和演示.Ajax 技术的出现使得 W ...

  2. 精心挑选的12款优秀 jQuery Ajax 分页插件和教程

    在这篇文章中,我为大家收集了12个基于 jQuery 框架的 Ajax 分页插件,这些插件都提供了详细的使用教程和演示.Ajax 技术的出现使得 Web 项目的用户体验有了极大的提高,如今借助优秀的  ...

  3. 转:精心挑选的12款优秀 jQuery Ajax 分页插件和教程

    在这篇文章中,我为大家收集了12个基于 jQuery 框架的 Ajax 分页插件,这些插件都提供了详细的使用教程和演示.Ajax 技术的出现使得 Web 项目的用户体验有了极大的提高,如今借助优秀的  ...

  4. 12款优秀jQuery Ajax分页插件和教程

    在这篇文章中,我为大家收集了12个基于 jQuery 框架的 Ajax 分页插件,这些插件都提供了详细的使用教程和演示.Ajax 技术的出现使得 Web 项目的用户体验有了极大的提高,如今借助优秀的 ...

  5. 基于jquery 的分页插件,前端实现假分页效果

    上次分享了一款jquery插件,现在依旧分享这个插件,不过上一次分享主要是用于regular框件,且每一页数据都是从后端获取过来的,这一次的分享主要是讲一次性获取完数据 然后手动进行分页.此需求基本上 ...

  6. 自编基于jQuery实现分页插件

    $(function(){ }); /** * @params dataUrl:请求数据url地址 * @params countUrl:请求数据总数url地址 * @params pageSize: ...

  7. 两款基于Jquery的图表插件

    一.EasyPieChart 页面加载时,运行initPieChart()函数,调用easyPieChart()函数,显示出图表. 代码: var initPieChart = function() ...

  8. 8款基于Jquery的WEB前端动画特效

    1.超炫酷的30个jQuery按钮悬停动画 按钮插件是最常见的jQuery插件之一,因为它用途广泛,而且配置起来最为方便.今天我们要分享的是30个超炫酷的jQuery悬停按钮动画,当我们将鼠标滑过按钮 ...

  9. 基于jquery下拉列表树插件代码

    分享一款基于jquery下拉列表树插件代码.这是一款实用的jquery 树形下拉框 下拉树代码下载.效果图如下: 在线预览   源码下载 实现的代码. html代码: <table width= ...

随机推荐

  1. python 链接mysql

    下载对应版本   安装 https://dev.mysql.com/downloads/connector/python/ 创建链接 # python 链接mysqlimport mysql.conn ...

  2. wex5 sqllite本地数据库的运用

    http://doc.wex5.com/?p=3774 需要引入包require("cordova!com.brodysoft.sqlitePlugin"); //本地数据库操作 ...

  3. 从HTTP request的body中拿到JSON并反序列化为一个对象

    import com.google.gson.Gson; import org.apache.struts2.ServletActionContext; import javax.servlet.Se ...

  4. Java 判断是否为回文字符串

    回文字符串有两种:abcba,abccba. 代码: static boolean func(String str) { int len = str.length(); for (int i = 0; ...

  5. ArrayList知识详解

    简介 ArrayList是Java集合常用的数据结构之一,继承自AbstractList,实现了List,RandomAccess.Cloneable.Serializable等一系列接口,支持快速访 ...

  6. pause模块

    pause模块:暂停脚本执行 # ansible-doc -s pause- name: Pause playbook execution pause: minutes: // 暂停的真实分钟数 pr ...

  7. 五、vue中export和export default的使用

    一.export的使用 比喻index.js要使用test.js中的数据,首先在test.js文件中进行导出操作 代码如下: export function list() { alert(" ...

  8. Codeforces 984 扫雷check 欧几里得b进制分数有限小数判定 f函数最大连续子段

    A /* Huyyt */ #include <bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) #define mkp(a,b) ...

  9. QByteArray引发的bug

    QByteArray引发的bug 在接收UDP数据的函数里,有如下代码片段 if(0x10 == data.size() && 0xCA == (unsigned char)data. ...

  10. css不同情况下的各种居中方法

    div水平居中 1.行内元素 .parent{ text-align: center } 2.块级元素 .son{ margin: 0 auto ; } 3.flex布局 .parent{ displ ...