jquery.pager.js分页实现详解


Posted in jQuery onJuly 29, 2019

本文实例为大家分享了jquery.pager.js分页实现代码,供大家参考,具体内容如下

jquery.pager.js:

/* 
* jQuery pager plugin 
* Version 1.0 (12/22/2008) 
* @requires jQuery v1.2.6 or later 
* 
* Example at: http://jonpauldavies.github.com/JQuery/Pager/PagerDemo.html 
* 
* Copyright (c) 2008-2009 Jon Paul Davies 
* Dual licensed under the MIT and GPL licenses: 
* http://www.opensource.org/licenses/mit-license.php 
* http://www.gnu.org/licenses/gpl.html 
* 
* Read the related blog post and contact the author at http://www.j-dee.com/2008/12/22/jquery-pager-plugin/ 
* 
* This version is far from perfect and doesn't manage it's own state, therefore contributions are more than welcome! 
* 
* Usage: .pager({ pagenumber: 1, pagecount: 15, buttonClickCallback: PagerClickTest }); 
* 
* Where pagenumber is the visible page number 
* pagecount is the total number of pages to display 
* buttonClickCallback is the method to fire when a pager button is clicked. 
* 
* buttonClickCallback signiture is PagerClickTest = function(pageclickednumber) 
* Where pageclickednumber is the number of the page clicked in the control. 
* 
* The included Pager.CSS file is a dependancy but can obviously tweaked to your wishes 
* Tested in IE6 IE7 Firefox & Safari. Any browser strangeness, please report. 
*/ 
(function($) { 
 
 $.fn.pager = function(options) { 
 
 var opts = $.extend({}, $.fn.pager.defaults, options); 
 
 return this.each(function() { 
 
 // empty out the destination element and then render out the pager with the supplied options 
  $(this).empty().append(renderpager(parseInt(options.pagenumber), parseInt(options.pagecount), options.buttonClickCallback)); 
  
  // specify correct cursor activity 
  $('.pages li').mouseover(function() { document.body.style.cursor = "pointer"; }).mouseout(function() { document.body.style.cursor = "auto"; }); 
 }); 
 }; 
 
 // render and return the pager with the supplied options 
 function renderpager(pagenumber, pagecount, buttonClickCallback) { 
 
 // setup $pager to hold render 
 var $pager = $('<ul class="pages"></ul>'); 
 
 // add in the previous and next buttons 
 $pager.append(renderButton('第一页', pagenumber, pagecount, buttonClickCallback)).append(renderButton('上一页', pagenumber, pagecount, buttonClickCallback)); 
 
 // pager currently only handles 5 viewable pages ( could be easily parameterized, maybe in next version ) so handle edge cases 
 var startPoint = 1; 
 var endPoint = 5; 
 
 if (pagenumber > 2) { 
  startPoint = pagenumber - 2; 
  endPoint = pagenumber + 2; 
 } 
 
 if (endPoint > pagecount) { 
  startPoint = pagecount - 3; 
  endPoint = pagecount; 
 } 
 
 if (startPoint < 1) { 
  startPoint = 1; 
 } 
 
 // loop thru visible pages and render buttons 
 for (var page = startPoint; page <= endPoint; page++) { 
 
  var currentButton = $('<li class="page-number">' + (page) + '</li>'); 
 
  page == pagenumber ? currentButton.addClass('pgCurrent') : currentButton.click(function() { buttonClickCallback(this.firstChild.data); }); 
  currentButton.appendTo($pager); 
 } 
 
 // render in the next and last buttons before returning the whole rendered control back. 
 $pager.append(renderButton('下一页', pagenumber, pagecount, buttonClickCallback)).append(renderButton('尾页', pagenumber, pagecount, buttonClickCallback)); 
 
 return $pager; 
 } 
 
 // renders and returns a 'specialized' button, ie 'next', 'previous' etc. rather than a page number button 
 function renderButton(buttonLabel, pagenumber, pagecount, buttonClickCallback) { 
 
 var $Button = $('<li class="pgNext">' + buttonLabel + '</li>'); 
 
 var destPage = 1; 
 
 // work out destination page for required button type 
 switch (buttonLabel) { 
  case "第一页": 
  destPage = 1; 
  break; 
  case "上一页": 
  destPage = pagenumber - 1; 
  break; 
  case "下一页": 
  destPage = pagenumber + 1; 
  break; 
  case "尾页": 
  destPage = pagecount; 
  break; 
 } 
 
 // disable and 'grey' out buttons if not needed. 
 if (buttonLabel == "第一页" || buttonLabel == "上一页") { 
  pagenumber <= 1 ? $Button.addClass('pgEmpty') : $Button.click(function() { buttonClickCallback(destPage); }); 
 } 
 else { 
  pagenumber >= pagecount ? $Button.addClass('pgEmpty') : $Button.click(function() { buttonClickCallback(destPage); }); 
 } 
 
 return $Button; 
 } 
 
 // pager defaults. hardly worth bothering with in this case but used as placeholder for expansion in the next version 
 $.fn.pager.defaults = { 
 pagenumber: 1, 
 pagecount: 1 
 }; 
 
})(jQuery);

Pager.css:

#pager ul.pages { 
display:block; 
border:none; 
text-transform:uppercase; 
font-size:10px; 
margin:10px 0 50px; 
padding:0; 
} 
 
#pager ul.pages li { 
list-style:none; 
float:left; 
border:1px solid #ccc; 
text-decoration:none; 
margin:0 5px 0 0; 
padding:5px; 
} 
 
#pager ul.pages li:hover { 
border:1px solid #003f7e; 
} 
 
#pager ul.pages li.pgEmpty { 
border:1px solid #eee; 
color:#eee; 
} 
 
#pager ul.pages li.pgCurrent { 
border:1px solid #003f7e; 
color:#000; 
font-weight:700; 
background-color:#eee; 
}

html代码:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
 <title>jQuery.pager.js Test</title> 
 <link href="Pager.css" rel="stylesheet" type="text/css" /> 
 <script src="jquery-1.2.6.js" type="text/javascript"></script> 
 <script src="jquery.pager.js" type="text/javascript"></script> 
 <script type="text/javascript" language="javascript"> 
 
 $(document).ready(function() { 
  $("#pager").pager({ pagenumber: 1, pagecount: 15, buttonClickCallback: PageClick }); 
 }); 
 
 PageClick = function(pageclickednumber) { 
  $("#pager").pager({ pagenumber: pageclickednumber, pagecount: 15, buttonClickCallback: PageClick }); 
  $("#result").html("Clicked Page " + pageclickednumber); 
 } 
  
 </script> 
</head> 
<body> 
<h1 id="result">Click the pager below.</h1> 
<div id="pager" ></div> 
</body> 
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

jQuery 相关文章推荐
jQuery 控制文本框自动缩小字体填充
Jun 16 jQuery
jQuery实现锚点向下平滑滚动特效示例
Aug 29 jQuery
jquery使用iscorll实现上拉、下拉加载刷新
Oct 26 jQuery
简单实现jQuery弹窗效果
Oct 30 jQuery
jQuery实现checkbox即点即改批量删除及中间遇到的坑
Nov 11 jQuery
通过jquery toggleClass()属性制作文章段落更改背景颜色
May 21 jQuery
jQuery实现的滑块滑动导航效果示例
Jun 04 jQuery
jQuery轮播图实例详解
Aug 15 jQuery
用jQuery将JavaScript对象转换为querystring查询字符串的方法
Nov 12 jQuery
Jquery动态列功能完整实例
Aug 30 jQuery
jQuery 图片查看器插件 Viewer.js用法简单示例
Apr 04 jQuery
jQuery实现容器间的元素拖拽功能
Dec 01 jQuery
jquery.pager.js实现分页效果
Jul 29 #jQuery
jQuery-Citys省市区三级菜单联动插件使用详解
Jul 26 #jQuery
jquery-ui 进度条功能示例【测试可用】
Jul 25 #jQuery
jquery ui 实现 tab标签功能示例【测试可用】
Jul 25 #jQuery
jQuery Ajax async=&gt;false异步改为同步时,解决导致浏览器假死的问题
Jul 22 #jQuery
jquery插件开发模式实例详解
Jul 20 #jQuery
jquery实现下载图片功能
Jul 18 #jQuery
You might like
用PHP动态创建Flash动画
2006/10/09 PHP
PHP $_FILES中error返回值详解
2014/01/30 PHP
基于jquery的使ListNav兼容中文首字拼音排序的实现代码
2011/07/10 Javascript
js 获取坐标 通过JS得到当前焦点(鼠标)的坐标属性
2013/01/04 Javascript
JavaScript 函数replace深入了解
2013/03/14 Javascript
JS中如何设置readOnly的值
2013/12/25 Javascript
JS中的数组的sort方法使用示例
2014/01/22 Javascript
快速解决js动态改变dom元素属性后页面及时渲染的问题
2016/07/06 Javascript
dul无法加载bootstrap实现unload table/user恢复
2016/09/29 Javascript
Bootstrap基本组件学习笔记之面板(14)
2016/12/08 Javascript
JavaScript制作简单的框选图表
2017/05/15 Javascript
JavaScript的六种继承方式(推荐)
2017/06/26 Javascript
easyui-datagrid开发实践(总结)
2017/08/02 Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
2017/09/20 jQuery
浅谈mvvm-simple双向绑定简单实现
2018/04/18 Javascript
微信小程序中的店铺评分组件及vue中用svg实现的评分显示组件
2018/11/16 Javascript
JS/HTML5游戏常用算法之碰撞检测 地图格子算法实例详解
2018/12/12 Javascript
浅谈vue生命周期共有几个阶段?分别是什么?
2020/08/07 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
2020/08/15 Javascript
使用SAE部署Python运行环境的教程
2015/05/05 Python
Python向MySQL批量插数据的实例讲解
2018/03/31 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
2019/05/07 Python
关于numpy数组轴的使用详解
2019/12/05 Python
python实现删除列表中某个元素的3种方法
2020/01/15 Python
详解Python中namedtuple的使用
2020/04/27 Python
python判断是空的实例分享
2020/07/06 Python
Python高阶函数与装饰器函数的深入讲解
2020/11/10 Python
美国一家运动专业鞋类零售商:Warehouse Shoe Sale(WSS)
2018/03/28 全球购物
英国受欢迎的运动鞋和街头服装商店:Footasylum
2018/06/12 全球购物
大专生自我鉴定范文
2013/10/01 职场文书
应聘护理专业毕业自荐书范文
2014/02/12 职场文书
计算机系本科生求职信
2014/05/31 职场文书
工伤死亡理赔协议书
2014/10/20 职场文书
大学生心理健康活动总结
2015/05/08 职场文书
2016年教代会开幕词
2016/03/04 职场文书
springboot集成redis存对象乱码的问题及解决
2022/06/16 Java/Android