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插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
Mar 25 jQuery
jQuery源码解读之extend()与工具方法、实例方法详解
Mar 30 jQuery
jQuery EasyUI 为Combo,Combobox添加清除值功能的实例
Apr 13 jQuery
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
Jun 11 jQuery
详解jQuery中的isPlainObject()使用方法
Feb 27 jQuery
使用jQuery动态设置单选框的选中效果
Dec 06 jQuery
jQuery选择器之层次选择器用法实例分析
Feb 19 jQuery
jQuery each和js forEach用法比较
Feb 27 jQuery
jQuery动态生成的元素绑定事件操作实例分析
May 04 jQuery
jquery中attr、prop、data区别与用法分析
Sep 25 jQuery
jQuery实现弹幕特效
Nov 29 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 strtotime函数详解
2009/12/18 PHP
smarty模板判断数组为空的方法
2015/06/10 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
2016/11/22 PHP
php 运算符与表达式详细介绍
2016/11/30 PHP
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
2010/03/24 Javascript
20款超赞的jQuery插件 Web开发人员必备
2011/02/26 Javascript
使用jquery实现div的tab切换实例代码
2013/05/27 Javascript
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
2015/09/02 Javascript
原生js实现autocomplete插件
2016/04/14 Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
2016/11/17 Javascript
js封装tab标签页实例分享
2016/12/19 Javascript
使用nodejs爬取前程无忧前端技能排行
2017/05/06 NodeJs
Vuex 单状态库与多模块状态库详解
2018/12/11 Javascript
javascript中undefined的本质解析
2019/07/31 Javascript
js动态获取时间的方法分析
2019/08/02 Javascript
[02:08:58]2014 DOTA2国际邀请赛中国区预选赛 Ne VS CIS
2014/05/22 DOTA
在Django中使用Sitemap的方法讲解
2015/07/22 Python
Python set常用操作函数集锦
2017/11/15 Python
python中验证码连通域分割的方法详解
2018/06/04 Python
利用python画出折线图
2018/07/26 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
2020/11/13 Python
用python对excel进行操作(读,写,修改)
2020/12/25 Python
Pycharm制作搞怪弹窗的实现代码
2021/02/19 Python
网吧收银员岗位职责
2013/12/14 职场文书
学生党支部先进事迹
2014/02/04 职场文书
学历公证委托书
2014/04/09 职场文书
税务干部群众路线教育实践活动自我剖析材料
2014/09/21 职场文书
小学生作文批改评语
2014/12/25 职场文书
鼋头渚导游词
2015/02/05 职场文书
2015年爱牙日活动总结
2015/02/05 职场文书
专项资金申请报告
2015/05/15 职场文书
2015年新农村建设指导员工作总结
2015/07/24 职场文书
Golang中interface{}转为数组的操作
2021/04/30 Golang
SpringCloud的JPA连接PostgreSql的教程
2021/06/26 Java/Android
Spring 使用注解开发
2022/05/20 Java/Android