jquery动态分页效果堪比时光网


Posted in Javascript onSeptember 25, 2014

最近一直研究jquery的分页效果,刚刚弄好了一个,拿出来与大家分享。分页效果与时光网的差不多。

先在aspx页面放置一个<div class="pageDivs"></div> ,这个是用来存放分页的。

然后建一个page.js文件,具体代码如下(js中用到的css类是自己设置的,这里就不给出了,具体的大家可以自己设置一下css样式):

$(document).ready(function(){

var pageCount=0;//总页数,在数据处理的函数里设定
//////////////////////右部按钮分页显示 

function right(pageCount,limit,rlimit){

var html="";

if(parseInt(pageCount)-limit>=rlimit){

for(var i=parseInt(pageCount)-rlimit+1; i<=parseInt(pageCount); i++){

html+="<a page="+i+" leaf='leaf'>"+i+"</a>";}

}

else{

for(var i=parseInt(limit)+1; i<=pageCount; i++){

html+="<a page="+i+" leaf='leaf'>"+i+"</a>";}

}

return html;

} 

//////////////////////////首页,尾页,上一页,下一页 

function changeState(pageIndex,pageCount){

var $button1=$("div.pageDivs").find("#Button1");//上一页

var $button2=$("div.pageDivs").find("#Button2");//下一页

var $first=$("div.pageDivs").find("#First");//首页

var $last=$("div.pageDivs").find("#Last");//尾页

if(parseInt(pageIndex)==1){

$first.css("display","none");

$button1.css("display","none");}

else{

$first.css("display","inline");

$button1.css("display","inline");

$first.attr("page",1);

$button1.attr("page",parseInt(pageIndex)-1);}

if(parseInt(pageIndex)==pageCount){

$button2.css("display","none");

$last.css("display","none");}

else{

$last.css("display","inline");

$button2.css("display","inline");

$last.attr("page",pageCount);

$button2.attr("page",parseInt(pageIndex)+1);}
}

////////////////////////////////span动态分页 左边显示的页码个数,右边显示的页码个数,要求limit>rlimit

function span(pageCount,pageIndex,limit,rlimit){

var isContinue=true;//指示是否继续执行函数

var html="<a id='First' href='#' >|<</a><a id='Button1' href='#' ><</a>";

var change=(parseInt(pageCount)-parseInt(rlimit))/(parseInt(limit)-2);//指示分页码可以变动的次数

if(pageCount!=0&&pageCount!=1){

if(pageCount<=limit){

for(var i=1; i<=pageCount; i++){

html+="<a page="+i+" leaf='leaf'>"+i+"</a>"}

}

else{

if(parseInt(pageIndex)<(limit-2)){

for(var i=1; i<=limit; i++){

html+="<a page="+i+" leaf='leaf'>"+i+"</a>";}

html+="...";

html+=right(pageCount,limit,rlimit);

}

else{

if(parseInt(pageIndex)%(limit-2)==0){

if(parseInt(pageIndex)/(limit-2)<=change&&parseInt(pageIndex)-1+parseInt(limit)-1<=parseInt(pageCount)-parseInt(rlimit)){

for(var i=parseInt(pageIndex)-1; i<parseInt(pageIndex)-1+limit; i++){

html+="<a page="+i+" leaf='leaf'>"+i+"</a>";}

html+="...";

html+=right(pageCount,limit,rlimit);

}

else{

for(var i=1; i<=rlimit; i++){

html+="<a page="+i+" leaf='leaf'>"+i+"</a>";}

html+="...";

var rest=parseInt(pageCount)-parseInt(rlimit);

if(rest<limit){

for(var i=parseInt(rlimit)+1; i<=parseInt(pageCount); i++){

html+="<a page="+i+" leaf='leaf'>"+i+"</a>";}

}

else{

var start=parseInt(pageCount)-parseInt(limit)+1;

for(var i=start; i<=pageCount; i++){

html+="<a page="+i+" leaf='leaf'>"+i+"</a>";}

}

}


}

else{

html=$("div.pageDivs").html();

$("div.pageDivs").html(html);

isContinue=false;

}

}
}

}

if(isContinue){

html+="<a id='Button2' href='#' >></a><a id='Last' href='#' >>|</a>";

$("div.pageDivs").html(html);}

changeState(pageIndex,pageCount);

$("div.pageDivs").find("a[page=" + parseInt(pageIndex) + "]:visible").removeAttr("href").removeClass("disabled").addClass("current").siblings("a[page:visible").removeClass("current").addClass("disabled").attr("href", "#");

}
function page(pageIndex){
/////////////这里放你具体的数据显示,使用ajax动态加载处理数据
pageCount="通过数据处理获得的页面总数";
span(pageCount,pageIndex,7,2);//对分页效果进行调用,这里设置左边显示7个页码,右边显示2个页码。
}
//////////////////////////////为页码绑定事件
$("div.pageDivs").find("a:visible").live("click",function(){

var result=$(this).attr("page");

if((typeof $(this).attr("leaf"))!= 'undefined'){

$(this).removeAttr("href").removeClass("disabled").addClass("current").siblings().removeClass("current").addClass("disabled").attr("href","#");}
page(result);

});

});

这样就行了,以上分页的算法是可以封装的,与具体的项目没关系,可以通用。
Javascript 相关文章推荐
通过 Dom 方法提高 innerHTML 性能
Mar 26 Javascript
js setTimeout 参数传递使用介绍
Aug 13 Javascript
详解JS 比较两个Json对象的值是否相等的实例
Nov 20 Javascript
jquery实现用户打分评分特效
May 28 Javascript
小议JavaScript中Generator和Iterator的使用
Jul 29 Javascript
js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
Jan 27 Javascript
浅谈bootstrap源码分析之tab(选项卡)
Jun 06 Javascript
jQuery继承extend用法详解
Oct 10 Javascript
Node.js常用工具之util模块
Mar 09 Javascript
vue.js学习之UI组件开发教程
Jul 03 Javascript
js实现简单选项卡功能
Mar 23 Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
Jul 01 Javascript
浅析js预加载/延迟加载
Sep 25 #Javascript
深入了解Node.js中的一些特性
Sep 25 #Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
Sep 25 #Javascript
JS小游戏之仙剑翻牌源码详解
Sep 25 #Javascript
JS小游戏之宇宙战机源码详解
Sep 25 #Javascript
JS小游戏之极速快跑源码详解
Sep 25 #Javascript
JS小游戏之象棋暗棋源码详解
Sep 25 #Javascript
You might like
人大复印资料处理程序_补充篇
2006/10/09 PHP
PHP令牌 Token改进版
2008/07/18 PHP
PHP开发的一些注意点总结
2010/10/12 PHP
怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
2013/04/22 PHP
php 判断字符串中是否包含html标签
2014/02/17 PHP
带你了解PHP7 性能翻倍的关键
2015/11/19 PHP
PHP使用数组依次替换字符串中匹配项
2016/01/08 PHP
Laravel框架源码解析之反射的使用详解
2020/05/14 PHP
js利用与或运算符优先级实现if else条件判断表达式
2010/04/15 Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
2013/07/22 Javascript
怎么选择Javascript框架(Javascript Framework)
2013/11/22 Javascript
jquery实现动态改变div宽度和高度
2015/05/08 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
简单理解vue中实例属性vm.$els
2016/12/01 Javascript
浅谈DOM的操作以及性能优化问题-重绘重排
2017/01/08 Javascript
js实现密码强度检验
2017/01/15 Javascript
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
D3.js实现简洁实用的动态仪表盘的示例
2018/04/04 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
2019/04/25 Javascript
JS开发常用工具函数(小结)
2019/07/04 Javascript
使用vue制作滑动标签
2019/09/21 Javascript
vue使用一些外部插件及样式的配置代码
2019/11/18 Javascript
js blob类型url的视频下载问题的解决
2019/11/29 Javascript
Vue 组件复用多次自定义参数操作
2020/07/27 Javascript
Python内置函数的用法实例教程
2014/09/08 Python
python实现根据图标提取分类应用程序实例
2014/09/28 Python
详细讲解用Python发送SMTP邮件的教程
2015/04/29 Python
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
Python通过cv2读取多个USB摄像头
2019/08/28 Python
wxpython绘制音频效果
2019/11/18 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
使用CSS3美化HTML表单的技巧演示
2016/05/17 HTML / CSS
JD Sports澳洲官网:英国领先的运动鞋和运动时尚零售商
2020/02/15 全球购物
一百多行代码实现react拖拽hooks
2021/03/23 Javascript
服务员岗位职责
2014/01/29 职场文书
2014年计生协会工作总结
2014/11/21 职场文书