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 相关文章推荐
Javascript 调试利器 Firebug使用详解六
Jul 05 Javascript
javascript instanceof 内部机制探析
Oct 15 Javascript
js向上无缝滚动,网站公告效果 具体代码
Nov 18 Javascript
js Date概念详细介绍
Nov 22 Javascript
javascript计算用户打开网页的停留时间
Jan 09 Javascript
javascript常用方法汇总
Dec 02 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
Dec 14 Javascript
vue项目中做编辑功能传递数据时遇到问题的解决方法
Dec 19 Javascript
jQuery图片缩放插件smartZoom使用实例详解
Aug 25 jQuery
JavaScript 高性能数组去重的方法
Sep 20 Javascript
layDate插件设置开始和结束时间
Nov 15 Javascript
小程序分享模块超级详解(推荐)
Apr 10 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 CodeIgniter分页实例及多条件查询解决方案(推荐)
2017/05/20 PHP
PHPMailer ThinkPHP实现自动发送邮件功能
2018/06/10 PHP
PHP微信H5支付开发实例
2018/07/25 PHP
JavaScript 撑出页面文字换行
2009/06/15 Javascript
js 学习笔记(三)
2009/12/29 Javascript
jquery分页对象使用示例
2014/04/01 Javascript
如何判断微信内置浏览器(通过User Agent实现)
2014/09/01 Javascript
jQuery实现仿腾讯迷你首页选项卡效果代码
2015/09/17 Javascript
JavaScript的设计模式经典之建造者模式
2016/02/24 Javascript
JavaScript继承学习笔记【新手必看】
2016/05/10 Javascript
Js调用Java方法并互相传参的简单实例
2016/08/11 Javascript
关于List.ToArray()方法的效率测试
2016/09/30 Javascript
浅谈angularjs module返回对象的坑(推荐)
2016/10/21 Javascript
微信小程序 利用css实现遮罩效果实例详解
2017/01/21 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
2017/12/06 Javascript
vue+axios+mock.js环境搭建的方法步骤
2018/08/28 Javascript
js html实现计算器功能
2018/11/13 Javascript
vue搜索和vue模糊搜索代码实例
2019/05/07 Javascript
Vue中 axios delete请求参数操作
2020/08/25 Javascript
[53:43]VP vs NewBee Supermajor 胜者组 BO3 第三场 6.5
2018/06/06 DOTA
wxPython事件驱动实例详解
2014/09/28 Python
用Python的Django框架完成视频处理任务的教程
2015/04/02 Python
python 读取摄像头数据并保存的实例
2018/08/03 Python
python爬虫获取小区经纬度以及结构化地址
2018/12/30 Python
pandas DataFrame索引行列的实现
2019/06/04 Python
Python Excel vlookup函数实现过程解析
2020/06/22 Python
解决python对齐错误的方法
2020/07/16 Python
详解CSS3的图层阴影和文字阴影效果使用
2016/06/09 HTML / CSS
AP澳洲中文网:澳洲正品直邮,包税收件无忧
2019/07/12 全球购物
Bed Bath & Beyond加拿大官网:购买床上用品、浴巾、厨房电器等
2019/10/04 全球购物
Nixon手表英国官网:美国尼克松手表品牌
2020/02/10 全球购物
大学生预备党员自我评价
2015/03/04 职场文书
2015年安康杯竞赛活动总结
2015/03/26 职场文书
公司搬迁通知
2015/04/20 职场文书
2016大学迎新欢迎词
2015/09/29 职场文书
vue实现列表拖拽排序的示例代码
2022/04/08 Vue.js