基于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 29 Javascript
基于jquery+thickbox仿校内登录注册框
Jun 07 Javascript
仅img元素创建后不添加到文档中会执行onload事件的解决方法
Jul 31 Javascript
ajax上传时参数提交不更新等相关问题
Dec 11 Javascript
js多级树形弹出一个小窗口层(非常好用)实例代码
Mar 19 Javascript
jquery实现点击弹出层效果的简单实例
Mar 03 Javascript
js实现表单及时验证功能 用户信息立即验证
Sep 13 Javascript
jQuery中的deferred使用方法
Mar 27 jQuery
在vue中,v-for的索引index在html中的使用方法
Mar 06 Javascript
Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法
Apr 09 Javascript
es6函数之尾调用优化实例分析
Apr 25 Javascript
JS this关键字在ajax中使用出现问题解决方案
Jul 17 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下使用curl模拟用户登陆的代码
2010/09/10 PHP
PHP Parse Error: syntax error, unexpected $end 错误的解决办法
2012/06/05 PHP
thinkphp使用phpmailer发送邮件的方法
2014/11/24 PHP
PHP 序列化和反序列化函数实例详解
2020/07/18 PHP
thinkphp 验证码 的使用小结
2017/05/07 PHP
PHP之认识(二)关于Traits的用法详解
2019/04/11 PHP
javascript面向对象之Javascript 继承
2010/05/04 Javascript
根据IP的地址,区分不同的地区,查看不同的网站页面的js代码
2013/02/26 Javascript
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
2013/09/16 Javascript
pace.js页面加载进度条插件
2015/09/29 Javascript
瀑布流的实现方式(原生js+jquery+css3)
2020/06/28 Javascript
微信小程序 框架详解及实例应用
2016/09/26 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
2017/05/19 Javascript
Vue开发Html5微信公众号的步骤
2019/04/11 Javascript
layui写后台表格思路和赋值用法详解
2019/11/14 Javascript
[13:38]2015国际邀请赛中国战队出征仪式
2015/05/29 DOTA
星球大战与Python之间的那些事
2016/01/07 Python
分享Python开发中要注意的十个小贴士
2016/08/30 Python
Python算法输出1-9数组形成的结果为100的所有运算式
2017/11/03 Python
Python编程pygal绘图实例之XY线
2017/12/09 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
2018/06/11 Python
如何在python字符串中输入纯粹的{}
2018/08/22 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
2018/10/31 Python
在python中利用最小二乘拟合二次抛物线函数的方法
2018/12/29 Python
Python实现的爬取小说爬虫功能示例
2019/03/30 Python
Python用SSH连接到网络设备
2021/02/18 Python
详解HTML5 data-* 自定义属性
2018/01/24 HTML / CSS
Stio官网:男女、儿童户外服装
2019/12/13 全球购物
国际商务系学生个人的自我评价
2013/11/26 职场文书
超市开店计划书
2014/09/15 职场文书
社区个人对照检查材料(群众路线)
2014/09/26 职场文书
入党积极分子十八届四中全会思想汇报
2014/10/23 职场文书
七夕情人节问候语
2015/11/11 职场文书
毕业生求职自荐信(2016最新版)
2016/01/28 职场文书
redis中lua脚本使用教程
2021/11/01 Redis
ssh服务器拒绝了密码 请再试一次已解决(亲测有效)
2022/08/14 Servers