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 相关文章推荐
两个DIV等高的JS的实现代码
Dec 23 Javascript
javascript去掉前后空格的实例
Nov 07 Javascript
js取模(求余数)隔行变色
May 15 Javascript
js实现仿京东2级菜单效果(带延时功能)
Aug 27 Javascript
网页中JS函数自动执行常用三种方法
Mar 30 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
Jun 15 Javascript
JS两种类型的表单提交方法实例分析
Nov 28 Javascript
微信小程序中setInterval的使用方法
Sep 29 Javascript
angular将html代码输出为内容的实例
Sep 30 Javascript
详解 微信小程序开发框架(MINA)
May 17 Javascript
JS实现提示框跟随鼠标移动
Aug 27 Javascript
Vue 实现登录界面验证码功能
Jan 03 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-fpm的配置详解
2013/06/03 PHP
PHP序列化/对象注入漏洞分析
2016/04/18 PHP
php中namespace及use用法分析
2016/12/06 PHP
PHP会话控制实例分析
2016/12/24 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
2011/08/23 Javascript
JS中typeof与instanceof之间的区别总结
2013/11/14 Javascript
js判断页面中是否有指定控件的简单实例
2014/03/04 Javascript
jQuery对于显示和隐藏等常用状态的判断方法
2014/12/13 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
2015/06/25 Javascript
js中实现字符串和数组的相互转化详解
2016/01/24 Javascript
使用AngularJS 跨站请求如何解决jsonp请求问题
2017/01/16 Javascript
Bootstrap表格使用方法详解
2017/02/17 Javascript
如何从零开始利用js手写一个Promise库详解
2018/04/19 Javascript
基于vue2的canvas时钟倒计时组件步骤解析
2018/11/05 Javascript
vue多次循环操作示例
2019/02/08 Javascript
vue 解决路由只变化参数页面组件不更新问题
2019/11/05 Javascript
Vue 中 a标签上href无法跳转的解决方式
2019/11/12 Javascript
深入理解 ES6中的 Reflect用法
2020/07/18 Javascript
python引用DLL文件的方法
2015/05/11 Python
详解Django通用视图中的函数包装
2015/07/21 Python
初步认识Python中的列表与位运算符
2015/10/12 Python
将Django项目部署到CentOs服务器中
2018/10/18 Python
python 根据时间来生成唯一的字符串方法
2019/01/14 Python
Python Pandas实现数据分组求平均值并填充nan的示例
2019/07/04 Python
python文件操作seek()偏移量,读取指正到指定位置操作
2020/07/05 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
2020/11/28 Python
CSS3 media queries + jQuery实现响应式导航
2016/09/30 HTML / CSS
html5 canvas的绘制文本自动换行的示例代码
2018/09/17 HTML / CSS
世界上最大的二手相机店:KEN
2017/05/17 全球购物
音乐学院硕士生的自我评价分享
2013/11/01 职场文书
升职自荐书范文
2013/11/28 职场文书
2015社区爱国卫生工作总结
2015/04/21 职场文书
2015年大学迎新晚会总结
2015/07/16 职场文书
用 Python 定义 Schema 并生成 Parquet 文件详情
2021/09/25 Python
Javascript的promise,async和await的区别详解
2022/03/24 Javascript