基于bootstrap3和jquery的分页插件


Posted in Javascript onJuly 31, 2015

自己写的一款基于bootstrap3和jquery的分页插件,初学jquery插件写法,写的很一般。拿出来献丑了。

/**
* 基于bootstrap3的jquery分页插件
* 调用方式分两种
* 1.直接调用法
*  普通大小
*  $.mypage(id,now,max,fn);
*  大尺寸
*  $.mypagelg(id,now,max,fn);
*  小尺寸
*  $.mypagesm(id,now,max,fn);
* 
*  参数说明:id为放置分页容器的ID,now为当前页,max为最大页,fn为回掉函数,回掉函数有一个参数为点击的页码
* 
* 2.选择器调用法
*  $(selector).mypage({
*   now:now,
*   last:last,
*   callback:fn,
*   max:max,
*   first:first,
*   style,style
*  });
*  参数说明:now为当前页,max为最大页,callback为回掉函数,回掉函数有一个参数为点击的页码,style可选参数,有"big" 和"small",fitst为首页按钮的文本,last为尾页按钮的文本
* 
* 当最大页为1时将不显示,当当前页设置小于1时默认为1,当前页大于最大页时默认为最大页
* 引用本js前请先引用jquery的js文件和bootstrap3的css文件
* 
*/
(function ($) {
 $.fn.mypage = function(options){
  var defaults = {
   now:1,
   max:1,
   callback:null,
   style:null,
   first:"«",
   last:"»"
  }
  var options = $.extend(defaults, options);
  this.each(function(){
   options.max=Math.round(options.max);
   options.now=Math.round(options.now);
   if(options.max<=1||isNaN(options.max)||isNaN(options.now))return;
   options.now=options.now<1?1:options.now>options.max?options.max:options.now;
   var mainbox=$(this).html("");
   var page_box= $("<ul></ul>").addClass("pagination").appendTo(mainbox);
   if(options.style!=null) page_box.addClass(options.style=="big"?"pagination-lg":options.style=="small"?"pagination-sm":options.style)
   var page_back=$("<li><a href=\"javascript:void(0)\">"+options.first+"</a></li>").appendTo(page_box);
   if(options.now==1) page_back.addClass("disabled");
   else page_back.on("click",function(){if(typeof options.callback === "function")options.callback(1);})
   var page_next=$("<li><a href=\"javascript:void(0)\">"+options.last+"</a></li>");
   if(options.now==options.max) page_next.addClass("disabled");
   else page_next.on("click",function(){if(typeof options.callback === "function")options.callback(options.max);})
   var page_now=$("<li><a href=\"javascript:void(0)\">"+options.now+"</a></li>").addClass("active");
   if(options.max<=10)
    for(var i=1;i<=options.max;i++) $.mypageInsertItem(i,options.now,page_now,page_box,options.callback);
   else
    if(options.now<5){
     for(var i=1;i<=6;i++) $.mypageInsertItem(i,options.now,page_now,page_box,options.callback);
     $.mypageInsertOther(page_box);
    }else if(options.max-options.now<4){
     $.mypageInsertOther(page_box);
     for(var i=options.max-5;i<=options.max;i++) $.mypageInsertItem(i,options.now,page_now,page_box,options.callback);
    }else{
     $.mypageInsertOther(page_box);
     for(var i=options.now-2;i<=options.now+2;i++) $.mypageInsertItem(i,options.now,page_now,page_box,options.callback);
     $.mypageInsertOther(page_box);
    }
   page_next.appendTo(page_box);
  })
 },
 $.mypageInsertItem=function(i,now,page_now,page_box,fn){
  if(i!=now) $("<li><a href=\"javascript:void(0)\">"+i+"</a></li>").on("click",function(){if(typeof fn === "function")fn($(this).text());}).appendTo(page_box);
  else page_now.appendTo(page_box);
 },
 $.mypageInsertOther=function(page_box){
  $("<li><a href=\"javascript:void(0)\">…</a></li>").addClass("disabled").appendTo(page_box);
 },
 $.mypage=function(id,now,max,fn){$("#"+id).mypage({now:now,max:max,callback:fn})},
 $.mypagesm=function(id,now,max,fn){$("#"+id).mypage({now:now,max:max,callback:fn,style:"pagination-sm"})},
 $.mypagelg=function(id,now,max,fn){$("#"+id).mypage({now:now,max:max,callback:fn,style:"pagination-lg"})}
})(jQuery);

以上所述就是本文的全部内容了,希望对大家学习jQuery能够有所帮助。

Javascript 相关文章推荐
Javascript匿名函数的一种应用 代码封装
Jun 27 Javascript
JQuery开发的数独游戏代码
Oct 29 Javascript
实现动画效果核心方式的js代码
Sep 27 Javascript
confirm的用法示例用于按钮操作时确定是否执行
Jun 19 Javascript
js通过location.search来获取页面传来的参数
Sep 11 Javascript
JavaScript中的ArrayBuffer详细介绍
Dec 08 Javascript
js实现双击图片放大单击缩小的方法
Feb 17 Javascript
JavaScript中神奇的call()方法
Mar 12 Javascript
js中获取键盘事件的简单实现方法
Oct 10 Javascript
js判断iframe中元素是否存在的实现代码
Dec 24 Javascript
jQuery设置图片等比例缩小的方法
Apr 29 jQuery
JS实现提交表单前的数字及邮箱校检功能
Nov 13 Javascript
jquery-tips悬浮提示插件分享
Jul 31 #Javascript
javascript实现检验的各种规则
Jul 31 #Javascript
纯JS实现本地图片预览的方法
Jul 31 #Javascript
javascript动画算法实例分析
Jul 31 #Javascript
jquery实现手机号码选号的方法
Jul 31 #Javascript
javascript文本模板用法实例
Jul 31 #Javascript
Javascript实现网络监测的方法
Jul 31 #Javascript
You might like
一篇不错的PHP基础学习笔记
2007/03/18 PHP
php中数组首字符过滤功能代码
2012/07/31 PHP
PHP学习笔记之php文件操作
2016/06/03 PHP
php解析mht文件转换成html的实例
2017/03/13 PHP
Javascript图像处理—虚拟边缘介绍及使用方法
2012/12/27 Javascript
window.navigate 与 window.location.href 的使用区别介绍
2013/09/21 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
2013/12/16 Javascript
jQuery控制TR显示隐藏的三种常用方法
2014/08/21 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
JS简单限制textarea内输入字符数量的方法
2015/10/14 Javascript
微信小程序 实现tabs选项卡效果实例代码
2016/10/31 Javascript
移动端日期插件Mobiscroll.js使用详解
2016/12/19 Javascript
详解Angularjs在控制器(controller.js)中使用过滤器($filter)格式化日期/时间实例
2017/02/17 Javascript
详解vue事件对象、冒泡、阻止默认行为
2017/03/20 Javascript
ES6新特性之解构、参数、模块和记号用法示例
2017/04/01 Javascript
浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预
2017/06/25 Javascript
简单实现js进度条加载效果
2020/03/25 Javascript
防止页面url缓存中ajax中post请求的处理方法
2017/10/10 Javascript
thinkjs 文件上传功能实例代码
2017/11/08 Javascript
vue监听input标签的value值方法
2018/08/27 Javascript
使用pm2部署node生产环境的方法步骤
2019/03/09 Javascript
简单谈谈javascript高级特性
2019/09/04 Javascript
微信小程序学习总结(一)项目创建与目录结构分析
2020/06/04 Javascript
[02:12]打造更好的电竞完美世界:完美盛典回顾篇
2018/12/19 DOTA
快速入门python学习笔记
2017/12/06 Python
Python socket模块方法实现详解
2019/11/05 Python
10个很棒的 CSS3 开发工具 推荐
2011/05/16 HTML / CSS
澳大利亚男士西服品牌:M.J.Bale
2018/02/06 全球购物
英国最大的海报商店:GB Posters
2018/03/20 全球购物
美国最好的钓鱼、狩猎和划船装备商店:Bass Pro Shops
2018/12/02 全球购物
Java编程面试题
2016/04/04 面试题
公司给客户的感谢信
2015/01/23 职场文书
2016高考感言
2015/08/01 职场文书
《打电话》教学反思
2016/02/22 职场文书
2019各种承诺书范文
2019/06/24 职场文书
经典《舰娘》游改全新动画预告 预定11月开播
2022/04/01 日漫