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 相关文章推荐
基于jquery的时间段实现代码
Aug 02 Javascript
JavaScript回调(callback)函数概念自我理解及示例
Jul 04 Javascript
javascript获取所有同类checkbox选项(实例代码)
Nov 07 Javascript
jquery 按键盘上的enter事件
May 11 Javascript
AngularJS初始化过程分析(引导程序)
Dec 06 Javascript
JS实现仿Windows经典风格的选项卡Tab切换代码
Oct 20 Javascript
bootstrap flask登录页面编写实例
Nov 01 Javascript
微信小程序项目实践之主页tab选项实现
Jul 18 Javascript
Vue.js 使用v-cloak后仍显示变量的解决方法
Nov 19 Javascript
JS实现的A*寻路算法详解
Dec 14 Javascript
node.js处理前端提交的GET请求
Aug 30 Javascript
原生js实现五子棋游戏
May 28 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
PHP 文件缓存的性能测试
2010/04/25 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
2014/07/18 PHP
a标签的href与onclick事件的区别详解
2014/11/12 Javascript
javascript动画算法实例分析
2015/07/31 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
2016/03/03 Javascript
Angular 理解module和injector,即依赖注入
2016/09/07 Javascript
关于Vue.js一些问题和思考学习笔记(2)
2016/12/02 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
2016/12/07 Javascript
解析js如何获取css样式
2016/12/11 Javascript
vue如何引用其他组件(css和js)
2017/04/13 Javascript
Angularjs修改密码的实例代码
2017/05/26 Javascript
javascript 构建模块化开发过程解析
2019/09/11 Javascript
python使用BeautifulSoup分页网页中超链接的方法
2015/04/04 Python
Python多线程编程(四):使用Lock互斥锁
2015/04/05 Python
python把ipynb文件转换成pdf文件过程详解
2019/07/09 Python
python global关键字的用法详解
2019/09/05 Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
2019/10/23 Python
pytorch动态网络以及权重共享实例
2020/01/06 Python
HTML5 拖拽批量上传文件的示例代码
2018/03/28 HTML / CSS
canvas绘制图片drawImage使用方法
2020/09/15 HTML / CSS
英国最大的海报商店:GB Posters
2018/03/20 全球购物
盛大二次面试题
2016/11/18 面试题
EJB的角色和三个对象
2015/12/31 面试题
银行会计财务工作个人的自我评价
2013/10/29 职场文书
给校长的建议书
2014/03/12 职场文书
委托公证书
2014/04/08 职场文书
社区健康教育工作方案
2014/06/03 职场文书
爱护花草树木的标语
2014/06/11 职场文书
带香烟到学校抽的检讨书
2014/09/25 职场文书
免职证明样本
2014/10/23 职场文书
保护环境的宣传语
2015/07/13 职场文书
2016党性教育学习心得体会
2016/01/21 职场文书
oracle通过存储过程上传list保存功能
2021/05/12 Oracle
MySQL 如何分析查询性能
2021/05/12 MySQL
SQL IDENTITY_INSERT作用案例详解
2021/08/23 MySQL
VUE解决跨域问题Access to XMLHttpRequest at
2022/05/06 Vue.js