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 相关文章推荐
详解new function(){}和function(){}() 区别分析
Mar 22 Javascript
window.onbeforeunload方法在IE下无法正常工作的解决办法
Jan 23 Javascript
Jquery性能优化详解
May 15 Javascript
javascript数据类型验证方法
Dec 31 Javascript
vue-cli扩展多模块打包的示例代码
Apr 09 Javascript
用vue2.0实现点击选中active其他选项互斥的效果
Apr 12 Javascript
angular2 组件之间通过service互相传递的实例
Sep 30 Javascript
vue实现的网易云音乐在线播放和下载功能案例
Feb 18 Javascript
微信小程序五子棋游戏的棋盘,重置,对弈实现方法【附demo源码下载】
Feb 20 Javascript
通过javascript实现段落的收缩与展开
Jun 26 Javascript
20个必会的JavaScript面试题(小结)
Jul 02 Javascript
Vue解析带html标签的字符串为dom的实例
Nov 13 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
linux环境apache多端口配置虚拟主机的方法深入介绍
2013/06/09 PHP
IIS6.0中配置php服务全过程解析
2013/08/07 PHP
php+ajax 实现输入读取数据库显示匹配信息
2015/10/08 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
2016/02/26 PHP
详解php中serialize()和unserialize()函数
2017/07/08 PHP
checkbox 复选框不能为空
2009/07/11 Javascript
javascript加号&quot;+&quot;的二义性说明
2013/03/04 Javascript
Jquery实现点击切换图片并隐藏显示内容(2种方法实现)
2013/04/11 Javascript
获得Javascript对象属性个数的示例代码
2013/11/21 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
浅谈window对象的scrollBy()方法
2015/07/15 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
2015/10/27 Javascript
基于Vue.js的表格分页组件
2016/05/22 Javascript
Angular.js指令学习中一些重要属性的用法教程
2017/05/24 Javascript
iframe高度自适应及隐藏滚动条的实例详解
2017/09/29 Javascript
原生JavaScrpit中异步请求Ajax实现方法
2017/11/03 Javascript
基于vue-cli创建的项目的目录结构及说明介绍
2017/11/23 Javascript
javascript实现倒计时效果
2020/02/17 Javascript
[04:17]DOTA2完美盛典,rOtk、BurNIng携手巴图演唱《倔强》
2017/11/28 DOTA
[01:00:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第三场 1月10日
2021/03/11 DOTA
PyChar学习教程之自定义文件与代码模板详解
2017/07/17 Python
Django实现简单分页功能的方法详解
2017/12/05 Python
python递归全排列实现方法
2018/08/18 Python
Python内置数据类型list各方法的性能测试过程解析
2020/01/07 Python
利用Pytorch实现简单的线性回归算法
2020/01/15 Python
Python函数默认参数常见问题及解决方案
2020/03/26 Python
Django高并发负载均衡实现原理详解
2020/04/04 Python
一名女生的自荐信
2013/12/08 职场文书
民族团结先进个人材料
2014/02/05 职场文书
商业计算机应用专业自荐书
2014/06/09 职场文书
大跃进口号
2014/06/16 职场文书
青年标兵事迹材料
2014/08/16 职场文书
兵马俑的导游词
2015/02/02 职场文书
广播稿:校园广播稿范文
2019/04/17 职场文书
导游词之重庆钓鱼城
2019/09/19 职场文书
python运算符之与用户交互
2022/04/13 Python