一款基于jQuery的分页插件
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、资料下载
一款基于jQuery的分页插件的更多相关文章
- 12款优秀 jQuery Ajax 分页插件和教程
12款优秀 jQuery Ajax 分页插件和教程 在这篇文章中,我为大家收集了12个基于 jQuery 框架的 Ajax 分页插件,这些插件都提供了详细的使用教程和演示.Ajax 技术的出现使得 W ...
- 精心挑选的12款优秀 jQuery Ajax 分页插件和教程
在这篇文章中,我为大家收集了12个基于 jQuery 框架的 Ajax 分页插件,这些插件都提供了详细的使用教程和演示.Ajax 技术的出现使得 Web 项目的用户体验有了极大的提高,如今借助优秀的 ...
- 转:精心挑选的12款优秀 jQuery Ajax 分页插件和教程
在这篇文章中,我为大家收集了12个基于 jQuery 框架的 Ajax 分页插件,这些插件都提供了详细的使用教程和演示.Ajax 技术的出现使得 Web 项目的用户体验有了极大的提高,如今借助优秀的 ...
- 12款优秀jQuery Ajax分页插件和教程
在这篇文章中,我为大家收集了12个基于 jQuery 框架的 Ajax 分页插件,这些插件都提供了详细的使用教程和演示.Ajax 技术的出现使得 Web 项目的用户体验有了极大的提高,如今借助优秀的 ...
- 基于jquery 的分页插件,前端实现假分页效果
上次分享了一款jquery插件,现在依旧分享这个插件,不过上一次分享主要是用于regular框件,且每一页数据都是从后端获取过来的,这一次的分享主要是讲一次性获取完数据 然后手动进行分页.此需求基本上 ...
- 自编基于jQuery实现分页插件
$(function(){ }); /** * @params dataUrl:请求数据url地址 * @params countUrl:请求数据总数url地址 * @params pageSize: ...
- 两款基于Jquery的图表插件
一.EasyPieChart 页面加载时,运行initPieChart()函数,调用easyPieChart()函数,显示出图表. 代码: var initPieChart = function() ...
- 8款基于Jquery的WEB前端动画特效
1.超炫酷的30个jQuery按钮悬停动画 按钮插件是最常见的jQuery插件之一,因为它用途广泛,而且配置起来最为方便.今天我们要分享的是30个超炫酷的jQuery悬停按钮动画,当我们将鼠标滑过按钮 ...
- 基于jquery下拉列表树插件代码
分享一款基于jquery下拉列表树插件代码.这是一款实用的jquery 树形下拉框 下拉树代码下载.效果图如下: 在线预览 源码下载 实现的代码. html代码: <table width= ...
随机推荐
- Linux命令基础#1
系统基础 三大部件:CPU 内存 IO 1.CPU :运算器 控制器 存储器 2.内存:CPU的数据只能从内存读取,且内存数据有易失性(页面) 3.IO:控制总线 数据总线(一个IO) OS原理: O ...
- c++中的四种智能指针
c++中的四种智能指针 写惯了python,golang再来写c++总觉得头大,很大一个原因就是他没有一个GC机制. 不过c++中提供了智能指针,也不是不能用,李姐万岁! auto_ptr, shar ...
- Mac 基于Anaconda的TensorFlow安装笔记
最近在中国大学MOOC平台学习北大的曹健老师上的“人工智能实践——Tensorflow”课程,开始我的人工智能之旅.第一天,讲解如何搭建实验室环境,我是mac系统,所以只写mac系统上的实验室环境安装 ...
- 自己动手实现一个html2canvas
前言 昨天写了新手引导动画的4种实现方式,里面用到了 html2canvas 于是就顺便了解了一下实现思路. 大概就是 利用 svg 的 foreignObject 标签, 嵌入 dom, 最后再利用 ...
- luogu P3210 [HNOI2010]取石头游戏
传送门 不会结论做个鬼系列 题意其实是在头尾(最多)两个栈以及中间一些双端队列依次取数,然后每个人都要最大化自己的价值 有一个结论,如果一段序列中,出现了三个相邻位置\(A,B,C\),满足\(A\l ...
- idea启动,mysql连接超时错误
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received ...
- 利用cmd运行java程序
在运行以下程序时,要确保正确配置java的环境变量!!! 此处仅仅使用“记事本”来写java程序!!! 1. 新建一个记事本文件,命名为HelloWorld.java 这里需要注意的是,要确保关闭了隐 ...
- php:页面乱码的解决方法
在 <?php header("Content-Type:text/html;charset=utf-8"); ////设置页面显示的文字编码 头部就写header函数处理成 ...
- outlook 使用临时邮箱 使用旧数据
控制面板-->邮件32位 显示配置文件 删除再添加 具体可参考 https://blog.csdn.net/liuyukuan/article/details/80043840 偷懒,图片从网上 ...
- python urljoin
使用urllib的urljoin()拼接两个地址 urlljoin的第一个参数是基础母站的url,第二个是需要拼接成绝对路径的url. from urllib import parse url1 = ...