pagination分页插件
最近做了个项目,有用到分页, 这类插件应该是很常用的, 虽然网上很多现成的分页插件, 但是还是想着自己写一个, 给自己积累点东西, 顺便练练手, 写了差不多3个小时左右, 代码如下:

代码:
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>分页插件</title>
<style type="text/css">
body{padding: 0px; margin: 0px;}
.content{width: 980px; margin: 0 auto; padding-top: 50px;}
ul{margin:0px; padding:0px;}
ul li{margin:0px; padding:0px; list-style:none; float:left;}
</style>
</head>
<body>
<div class="content">
<p>当前页: <input type="text" id="txtPageIndex" /></p>
<p>总页数: <input type="text" id="txtPageCount" /></p>
<p><button id="btnSubmit">submit</button></p>
<br />
<br /> <p>输出:</p>
<div id="pageBox"> </div>
</div> <script type="text/javascript">
function byID(id){
return document.getElementById(id);
} var ui = {};
ui.btnSubmit = byID('btnSubmit');
ui.txtPageIndex = byID('txtPageIndex');
ui.txtPageCount = byID('txtPageCount');
ui.pageBox = byID('pageBox'); ui.btnSubmit.onclick = function(){
var pageIndex = ui.txtPageIndex.value;
var pageCount = ui.txtPageCount.value; var options = {
pageIndex: parseInt(pageIndex),
pageCount: parseInt(pageCount),
container: ui.pageBox
}; if(options.pageCount > 0){
var page = new pagination(options);
page.init();
}else{
alert('总页数不能小于0');
} }; function pagination(options){
this.pageIndex = options.pageIndex || 1;
this.pageCount = options.pageCount;
this.showPage = options.showPage || 3;
this.container = options.container;
} pagination.prototype = {
init: function(){
/*初始化检查当前页是否合理*/
this.pageIndex = this.pageIndex < 1 ? 1 : this.pageIndex;
this.pageIndex = this.pageIndex > this.pageCount ? this.pageCount : this.pageIndex; /*渲染UI*/
this.render();
},
render: function(){
var pageList, setting; pageList = [];
setting = this.getSetting(this.pageIndex);
pageList.push('<ul class="pagination">'); if(this.pageIndex > 1){
pageList.push('<li><button value="' + setting.prev + '">上一页</button></li>'); if(setting.start > 1){
pageList.push('<li><button value="1">1</button></li>');
} if(setting.start > 2){
pageList.push('<li>...</li>');
}
}else{
pageList.push('<li><button value="1" disabled="disabled">上一页</button></li>');
} for (var i = setting.start; i <= setting.end; i++) {
if(i == this.pageIndex){
pageList.push('<li><button value="' + i + '" disabled="disabled">' + i + '</button></li>');
}else{
pageList.push('<li><button value="' + i + '">' + i + '</button></li>');
}
}; if(this.pageIndex < this.pageCount){
if(setting.end < this.pageCount){
if(setting.end < (this.pageCount - 1)){
pageList.push('<li>...</li>');
} pageList.push('<li><button value="' + this.pageCount + '">' + this.pageCount + '</button></li>');
} pageList.push('<li><button value="' + setting.next + '">下一页</button></li>');
}else{
pageList.push('<li><button value="' + this.pageCount + '" disabled="disabled">下一页</button></li>');
} pageList.push('</ul>');
this.container.innerHTML = pageList.join('\n');
this.regEvent();
},
regEvent: function(){
/*事件注册*/
var _this = this;
var button = this.container.getElementsByTagName('button'); for(var i = 0; i < button.length; i++){
button[i].onclick = function(){
_this.change(parseInt(this.value));
};
}
},
change: function(index){
/*当前页改变时触发*/
this.pageIndex = index;
this.render();
this.onChange(index);
},
getSetting: function(index){
var start, end, prev, next, s, e; s = 0;
e = 0; start = index - this.showPage;
end = index + this.showPage; if(start < 1){
s = Math.abs(start) + 1;
start = 1;
} if(end > this.pageCount){
e = end - this.pageCount;
end = this.pageCount;
} if(s > 0 && e <= 0){
e = s + end;
end = e > this.pageCount ? this.pageCount : e;
}else if(e > 0 && s <= 0){
s = start - e;
start = s < 1 ? 1: s;
} prev = index > start ? index - 1 : 1;
next = index < end ? index + 1 : end; /*核心算法, 根据当前页计算出显示的起始页和截止页, 上一页, 下一页 这些数据*/
return {start: start, end: end, prev: prev, next: next};
},
onChange: function(index){
/*空函数, 可覆盖*/
console.log(index);
}
}; </script>
</body>
</html>
pagination分页插件的更多相关文章
- Slider 滚动条 Pagination分页插件 JS Ajax 数据范围筛选 加载 翻页 笔记
入职以后的第二个任务 根据用户所选的价格范围 筛选数据 修复BUG - 筛选数据后 总数没有更新.列表显示错误.翻页加载错误 用到的一些知识点 jquery插件系列之 - Slider滑块 max ...
- jQuery Pagination分页插件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- jQuery Pagination分页插件--刷新
源码地址:https://github.com/SeaLee02/FunctionModule/blob/master/UploadFiles/WebDemo/FenYE/FenYeDemo.aspx ...
- JQuery Pagination 分页插件 增加了首页尾页以及跳转功能
JQuery分页插件 挺好用的 但是官方是没有提供首页尾页以及跳转功能 我觉得这个功能可以有,于是就改进了一下 一个js一个css从连接里面下 链接:http://pan.baidu.com/s/1n ...
- Jquery Pagination分页插件使用
JqueryPagination是个简单轻量级的分页插件,使用起来很容易,只要初始化一个实例,并设置总数量.翻页回调函数.其它参数就可以实现无刷新分页功能了. 准备工作 下载jquery.min.js ...
- jQuery Pagination分页插件--无刷新
源码:https://github.com/SeaLee02/FunctionModule/blob/master/UploadFiles/WebDemo/FenYE/FenYeAjax.aspx 代 ...
- jQuery Pagination分页插件的使用
一.引用CSS和JS: <link href="/Content/Plugins/jQuery.Pagination_v2.2/pagination.css" rel=&qu ...
- Jquery 分页插件 Jquery Pagination
Jquery 分页插件 Jquery Pagination 分页插件来说,我觉得适用就行,尽量简单然后能够根据不同的应用场景能够换肤.展现形式等. 对于初学者想写分页插件的同学,也可以看下源码,代码也 ...
- Jquery前端分页插件pagination使用
插件描述:JqueryPagination是一个轻量级的jquery分页插件.只需几个简单的配置就可以生成分页控件.并且支持ajax获取数据,自定义请求参数,提供多种方法,事件和回调函数,功能全面的分 ...
随机推荐
- codevs1040 统计单词个数
题目描述 Description 给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保证每行一定为20个).要求将此字母串分成k份(1<k<= ...
- 关键路径(CriticalPath)算法
#include <stdio.h> #include <stdlib.h> #include <malloc.h> #define MAXVEX 30 //最大顶 ...
- 【HDU】1754 I hate it ——线段树 单点更新 区间最值
I Hate It Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- aliCloud基于RAMService实现跨账户资源访问
1,aliCloud基于RAM service实现跨账户ECS资源访问Example 主要的资源为Instance,Image,Snapshot,disk,SecurityGroup Action太多 ...
- ALLEN-XIE
ALLEN-XIE ABOUT Allen Xie是一家坚持理念至上的西装定制店.我们的价值观渗透于我们所做的每一件事中,从而确保始终遵循自己的风格.我们坚持用最高标准要求自己,因此,在制衣过程中 ...
- C++中基类的析构函数为什么要用virtual虚析构函数
知识背景 要弄明白这个问题,首先要了解下C++中的动态绑定. 关于动态绑定的讲解,请参阅: C++中的动态类型与动态绑定.虚函数.多态实现 正题 直接的讲,C++中基类采用virtual虚析构函数是 ...
- 安装Discuz!论坛时提示“mysqli_connect() 不支持 advice_mysqli_connect”
安装Discuz!论坛时提示“不支持Mysql数据库,无法安装论坛”的解决方法1,在系统的 system32(C:\windows\system32)目录下缺少libmysql.dll文件,解决方法是 ...
- UVA 1395 Slim Span
题意: 要求的是所有生成树中最大边与最小边差值最小的那个. 分析: 其实可以利用最小瓶颈生成树,就是最小生成树这一性质,枚举原图的最小边,然后找相应生成树的最大边 代码: #include <i ...
- asp.net 导出excel文件
之前做过winfrom程序的导出excel文件的功能,感觉非常简单.现在试着做asp.net中导出excel的功能,之前用的是Microsoft.Office.Interop.Excel这个对象来实现 ...
- 绝对好文C#调用C++DLL传递结构体数组的终极解决方案
C#调用C++DLL传递结构体数组的终极解决方案 时间 2013-09-17 18:40:56 CSDN博客相似文章 (0) 原文 http://blog.csdn.net/xxdddail/art ...