jquery.pager.js实现分页效果


Posted in jQuery onJuly 29, 2019

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

1.html

<link href="/stylesheets/Pager.css" rel="stylesheet" type="text/css"/>
 <script src="/javascripts/web/jquery.pager.js" type="text/javascript"></script>


<body>
   <div id="pager">
    <div id="countPage" style="display:none">{{maxPage}}</div>
    <div id="title" style="display:none">{{title}}</div>
    <div id="nowPage" style="display:none">{{page}}</div>
   </div>
</body>
<script type="text/javascript">
 var title =jQuery("#title").text() ;
 var pageCount =parseInt(jQuery("#countPage").text()) ;
 var nowPage=parseInt(jQuery("#nowPage").text());
 jQuery(function(){
  $("#pager").pager({ pagenumber: nowPage, pagecount: pageCount, buttonClickCallback: PageClick });//pagenumber:当前页,pagecount:总页数
 });
 PageClick = function(pageclickednumber) {
  $("#pager").pager({
   pagenumber: pageclickednumber, pagecount: pageCount, buttonClickCallback: PageClick
  });
  window.location.href = "/article/search/"+title+"/"+pageclickednumber;
 }
</script>

2.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:-20px 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 #3c90d9;
 color: #fff;
 font-weight:700;
 /*background-color:#eee;*/
 background: #3c90d9 none repeat scroll 0 0;
}
#pager{margin-left: 290px;}

3.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('first', pagenumber, pagecount, buttonClickCallback)).append(renderButton('prev', pagenumber, pagecount, buttonClickCallback));
  $pager.append(renderButton('上一页', pagenumber, pagecount, buttonClickCallback));
  // pager currently only handles 10 viewable pages ( could be easily parameterized, maybe in next version ) so handle edge cases
  var startPoint = 1;
  //var endPoint = 9;
  var endPoint = 5;
  if (pagenumber > 4 && pagenumber<pagecount-1) {
   startPoint = pagenumber - 2;
   endPoint = pagenumber + 2;
  }
  if(pagenumber>pagecount-2&& pagenumber<pagecount+1){
   startPoint = pagecount - 4;
   endPoint = pagecount;
  }
  if (endPoint > pagecount) {
   startPoint = pagecount - 8;
   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('next', pagenumber, pagecount, buttonClickCallback)).append(renderButton('last', pagenumber, pagecount, buttonClickCallback));
  $pager.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 "first":
    destPage = 1;
    break;
   case "上一页":
    destPage = pagenumber - 1;
    break;
   case "下一页":
    destPage = pagenumber + 1;
    break;
   case "last":
    destPage = pagecount;
    break;
  }

  // disable and 'grey' out buttons if not needed.
  if (buttonLabel == "first" || 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);

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

jQuery 相关文章推荐
jQuery Plupload上传插件的使用
Apr 19 jQuery
jQuery实现百度登录框的动态切换效果
Apr 21 jQuery
jQuery实现滚动效果
Nov 17 jQuery
jQuery实现的淡入淡出与滑入滑出效果示例
Apr 18 jQuery
jQuery实现轮播图及其原理详解
Apr 12 jQuery
jquery实现联想词搜索框和搜索结果分页的示例
Oct 10 jQuery
详解jQuery中的getAll()和cleanData()
Apr 15 jQuery
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
Jul 03 jQuery
jquery实现直播弹幕效果
Nov 28 jQuery
jQuery轮播图功能制作方法详解
Dec 03 jQuery
Jquery ajax书写方法代码实例解析
Jun 12 jQuery
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
Jan 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
jQuery实现图片下载代码
Jul 18 #jQuery
You might like
农民C键的运用技巧
2020/03/04 星际争霸
php生成随机字符串可指定纯数字、纯字母或者混合的
2014/04/18 PHP
ECMall支持SSL连接邮件服务器的配置方法详解
2014/05/19 PHP
Yii数据模型中rules类验证器用法分析
2016/07/15 PHP
PDO::quote讲解
2019/01/29 PHP
推荐dojo学习笔记
2007/03/24 Javascript
jquery tools之tooltip
2009/07/25 Javascript
javascript Demo模态窗口
2009/12/06 Javascript
默认让页面的第一个控件选中的javascript代码
2009/12/26 Javascript
JQuery入门——用映射方式绑定不同事件应用示例
2013/02/05 Javascript
js 动态加载事件的几种方法总结
2013/12/25 Javascript
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
javaScript年份下拉列表框内容为当前年份及前后50年
2014/05/28 Javascript
javascript的switch用法注意事项分析
2015/02/02 Javascript
纯js实现仿QQ邮箱弹出确认框
2015/04/29 Javascript
js焦点文字滚动效果代码分享
2015/08/25 Javascript
谈谈AngularJs中的隐藏和显示
2015/12/09 Javascript
JQuery validate插件Remote用法大全
2016/05/15 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
2016/08/17 Javascript
jQuery子元素过滤选择器用法示例
2016/09/09 Javascript
bootstrap table实现点击翻页功能 可记录上下页选中的行
2017/09/28 Javascript
Vue 页面切换效果之 BubbleTransition(推荐)
2018/04/08 Javascript
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
[00:34]DOTA2上海特级锦标赛 VG战队宣传片
2016/03/04 DOTA
[02:32]“虐狗”镜头慎点 2016国际邀请赛中国区预选赛现场玩家采访
2016/06/28 DOTA
Python socket.error: [Errno 98] Address already in use的原因和解决方法
2014/08/25 Python
Python实现抓取页面上链接的简单爬虫分享
2015/01/21 Python
python生成tensorflow输入输出的图像格式的方法
2018/02/12 Python
Python Tkinter模块实现时钟功能应用示例
2018/07/23 Python
Python web如何在IIS发布应用过程解析
2020/05/27 Python
精选干货:Java精选笔试题附答案
2014/01/18 面试题
趣味运动会活动方案
2014/02/12 职场文书
仓库规划计划书
2014/04/28 职场文书
补充协议书
2015/01/28 职场文书
Mysql Innodb存储引擎之索引与算法
2022/02/15 MySQL
详解使用内网穿透工具Ngrok代理本地服务
2022/03/31 Servers