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+ThinkPHP+Ajax实现即时消息提醒功能实例代码
Mar 21 jQuery
为JQuery EasyUI 表单组件增加焦点切换功能的方法
Apr 13 jQuery
jQuery插件select2利用ajax高效查询大数据列表(可搜索、可分页)
May 19 jQuery
简单实现jQuery手风琴效果
Aug 18 jQuery
基于jQuery实现的设置文本区域的光标位置
Jun 15 jQuery
jQuery轻量级表单模型验证插件
Oct 15 jQuery
jQuery实现的简单日历组件定义与用法示例
Dec 24 jQuery
jQuery实现带3D切割效果的轮播图功能示例【附源码下载】
Apr 04 jQuery
基于 jQuery 实现键盘事件监听控件
Apr 04 jQuery
JQuery事件委托原理与用法实例分析
May 13 jQuery
基于jquery实现的tab选项卡功能示例【附源码下载】
Jun 10 jQuery
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
Apr 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动态变静态原理
2006/11/25 PHP
PHP操作xml代码
2010/06/17 PHP
使用PHP 5.0创建图形的巧妙方法
2010/10/12 PHP
解析yii数据库的增删查改
2013/06/20 PHP
IIS安装Apache伪静态插件的具体操作图文
2013/07/01 PHP
PHP封装的XML简单操作类完整实例
2017/11/13 PHP
你可能不再需要JQUERY
2021/03/09 Javascript
jQuery ready函数滥用分析
2011/02/16 Javascript
JS截取字符串常用方法详细整理
2013/10/28 Javascript
使用node.js 制作网站前台后台
2014/11/13 Javascript
js封装可使用的构造函数继承用法分析
2015/01/28 Javascript
jQuery实现鼠标单击网页文字后在文本框显示的方法
2015/05/06 Javascript
Javascript如何判断数据类型和数组类型
2016/06/22 Javascript
深入理解ES6之数据解构的用法
2018/01/13 Javascript
mpvue中使用flyjs全局拦截的实现代码
2018/09/13 Javascript
浅谈Angular 观察者模式理解
2018/11/01 Javascript
详解Vue2.0组件的继承与扩展
2018/11/23 Javascript
小程序如何使用分包加载的实现方法
2019/05/22 Javascript
[04:54]DOTA2-DPC中国联赛1月31日Recap集锦
2021/03/11 DOTA
Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
2018/07/12 Python
对Pycharm创建py文件时自定义头部模板的方法详解
2019/02/12 Python
使用HTML5的File实现base64和图片的互转
2013/08/01 HTML / CSS
英国泽西岛植物:Jersey Plants Direct
2019/08/07 全球购物
美国基督教约会网站:ChristianCafe.com
2020/02/04 全球购物
银行会计职员个人的自我评价
2013/09/29 职场文书
求职信的要素有哪些呢
2013/12/26 职场文书
专项法律服务方案
2014/06/11 职场文书
党章培训心得体会
2014/09/04 职场文书
森马旗舰店双十一营销方案
2014/09/29 职场文书
县委班子四风对照检查材料思想汇报
2014/09/29 职场文书
六一领导慰问欢迎词
2015/01/26 职场文书
个人总结与自我评价2015
2015/03/11 职场文书
爱心捐款活动总结
2015/05/09 职场文书
2015年学校财务工作总结
2015/05/19 职场文书
幸福终点站观后感
2015/06/04 职场文书
初中军训感言
2015/08/01 职场文书