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 解决表单仍然提交即使监听处理函数返回false
Mar 14 Javascript
基于jquery自己写tab滑动门(通用版)
Oct 30 Javascript
js设置组合快捷键/tabindex功能的方法
Nov 21 Javascript
jQuery实现tag便签去重效果的方法
Jan 20 Javascript
JavaScript中ES6字符串扩展方法
Aug 26 Javascript
微信小程序 Storage API实例详解
Oct 02 Javascript
AngularJS使用带属性值的ng-app指令实现自定义模块自动加载的方法
Jan 04 Javascript
JavaScript和jQuery制作光棒效果
Feb 24 Javascript
laravel5.3 vue 实现收藏夹功能实例详解
Jan 21 Javascript
vue模块拖拽实现示例代码
Mar 09 Javascript
Vue批量图片显示时遇到的路径被解析问题
Mar 28 Javascript
vue.config.js常用配置详解
Nov 14 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进行微信公众平台开发的示例
2015/08/21 PHP
thinkPHP5框架路由常用知识点汇总
2019/09/15 PHP
Javascript中正则表达式的全局匹配模式分析
2011/04/26 Javascript
Jquery进度条插件 Progress Bar小问题解决
2011/07/12 Javascript
JS的replace方法介绍
2012/10/20 Javascript
jquery easyui combobox模糊过滤(示例代码)
2013/11/30 Javascript
多种jQuery绑定事件的实现方式
2016/06/13 Javascript
js Canvas实现的日历时钟案例分享
2016/12/25 Javascript
微信小程序Server端环境配置详解(SSL, Nginx HTTPS,TLS 1.2 升级)
2017/01/12 Javascript
详解有关easyUI的拖动操作中droppable,draggable用法例子
2017/06/03 Javascript
基于cropper.js封装vue实现在线图片裁剪组件功能
2018/03/01 Javascript
JS实现的简单下拉框联动功能示例
2018/05/11 Javascript
jQuery实现的简单对话框拖动功能示例
2018/06/05 jQuery
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
vue实现微信分享功能
2018/11/28 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
vue eslint简要配置教程详解
2019/07/26 Javascript
基于JQuery和DWR实现异步数据传递
2020/10/16 jQuery
[51:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第二场 8.26
2018/08/30 DOTA
用于业余项目的8个优秀Python库
2018/09/21 Python
python获取中文字符串长度的方法
2018/11/14 Python
pytorch 图像中的数据预处理和批标准化实例
2020/01/15 Python
numpy 矩阵形状调整:拉伸、变成一位数组的实例
2020/06/18 Python
Python configparser模块封装及构造配置文件
2020/08/07 Python
python中如何使用虚拟环境
2020/10/14 Python
纽约复古灵感的现代珠宝品牌:Lulu Frost
2018/03/03 全球购物
岗位职责的定义
2013/11/10 职场文书
行政总监岗位职责
2013/12/05 职场文书
司机检讨书
2014/02/13 职场文书
药品促销活动方案
2014/02/14 职场文书
文体活动总结范文
2014/05/05 职场文书
经管应届生求职信范文
2014/05/18 职场文书
学校标语大全
2014/06/19 职场文书
大学推普周活动总结
2015/05/07 职场文书
python 对图片进行简单的处理
2021/06/23 Python
Mybatis-Plus 使用 @TableField 自动填充日期
2022/04/26 Java/Android