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中map函数的两种方式
Apr 07 jQuery
JS/jquery实现一个网页内同时调用多个倒计时的方法
Apr 27 jQuery
jQuery+CSS实现的标签页效果示例【测试可用】
Aug 14 jQuery
解决jquery有正确返回值但不执行success函数的问题
Aug 20 jQuery
学习jQuery中的noConflict()用法
Sep 28 jQuery
IE8中jQuery.load()加载页面不显示的原因
Nov 15 jQuery
jQuery实现的点击图片居中放大缩小功能示例
Jan 16 jQuery
详解jQuery设置内容和属性
Apr 11 jQuery
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
Aug 08 jQuery
jQuery实现移动端下拉展现新的内容回弹动画
Jun 24 jQuery
jQuery实现全选按钮
Jan 01 jQuery
jQuery冲突问题解决方法
Jan 19 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 jquery 多文件上传简单实例
2013/12/23 PHP
iOS10推送通知开发教程
2016/09/19 PHP
PHP实现对图片的反色处理功能【测试可用】
2018/02/01 PHP
php根据命令行参数生成配置文件详解
2019/03/15 PHP
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
JQUERY对单选框(radio)操作的小例子
2013/04/25 Javascript
node.js中的url.format方法使用说明
2014/12/10 Javascript
关于vue-router路径计算问题
2017/05/10 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
javascript中一些奇葩的日期换算方法总结
2018/11/14 Javascript
vue+iview 兼容IE11浏览器的实现方法
2019/01/07 Javascript
JavaScript布尔运算符原理使用解析
2020/05/06 Javascript
js实现简单图片拖拽效果
2021/02/22 Javascript
Python写的一个简单DNS服务器实例
2014/06/04 Python
Python的Django框架中使用SQLAlchemy操作数据库的教程
2016/06/02 Python
浅谈python中copy和deepcopy中的区别
2017/10/23 Python
详解python上传文件和字符到PHP服务器
2017/11/24 Python
Python音频操作工具PyAudio上手教程详解
2019/06/26 Python
python删除文件夹下相同文件和无法打开的图片
2019/07/16 Python
python基于socket实现的UDP及TCP通讯功能示例
2019/11/01 Python
Django 实现Admin自动填充当前用户的示例代码
2019/11/18 Python
python 获取字典特定值对应的键的实现
2020/09/29 Python
matplotlib 范围选区(SpanSelector)的使用
2021/02/24 Python
three.js模拟实现太阳系行星体系功能
2019/09/03 HTML / CSS
Html5移动端网页端适配(js+rem)
2021/02/03 HTML / CSS
美国宠物用品网站:Value Pet Supplies
2018/03/17 全球购物
单身旅行者的单身假期:Just You
2018/04/08 全球购物
世界上最大的罕见唱片、CD和音乐纪念品网上商店:991.com
2018/05/03 全球购物
内部类的定义、种类以及优点
2013/10/16 面试题
中学生评语大全
2014/04/18 职场文书
公司晚会策划方案
2014/05/17 职场文书
铁人观后感
2015/06/16 职场文书
MySQL入门命令之函数-单行函数-流程控制函数
2021/04/05 MySQL
redis实现共同好友的思路详解
2021/05/26 Redis
浅谈Redis中的RDB快照
2021/06/29 Redis
TV动画《史上最强大魔王转生为村民A》番宣CM公布
2022/04/01 日漫