基于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 相关文章推荐
jQuery Lightbox 图片展示插件使用说明
Apr 25 Javascript
jQuery实现带有动画效果的回到顶部和底部代码
Nov 04 Javascript
详解JavaScript基于面向对象之创建对象(2)
Dec 10 Javascript
微信小程序入门教程
Nov 18 Javascript
javascript中的面向对象
Mar 30 Javascript
解决OneThink中无法异步提交kindeditor文本框中修改后的内容方法
May 05 Javascript
Vue中的ref作用详解(实现DOM的联动操作)
Aug 21 Javascript
基于jQuery Ajax实现下拉框无刷新联动
Dec 06 jQuery
Vue 表情包输入组件的实现代码
Jan 21 Javascript
js中offset,client , scroll 三大元素知识点总结
Sep 11 Javascript
微信小程序中使用 async/await的方法实例分析
May 06 Javascript
JS JQuery获取data-*属性值方法解析
Sep 01 jQuery
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+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
2006/12/16 PHP
PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
2015/05/12 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
2019/10/17 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
再论Javascript的类继承
2011/03/05 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
2014/06/05 Javascript
不用一句js代码初始化组件
2016/01/27 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
2016/04/05 Javascript
易被忽视的js事件问题总结
2016/05/14 Javascript
jQuery实现的tab标签切换效果示例
2016/09/05 Javascript
JS实现“隐藏与显示”功能(多种方法)
2016/11/24 Javascript
前端框架学习总结之Angular、React与Vue的比较详解
2017/03/14 Javascript
javascript 开发之百度地图使用到的js函数整理
2017/05/19 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
微信小程序实时聊天WebSocket
2018/07/05 Javascript
重新认识vue之事件阻止冒泡的实现
2018/08/02 Javascript
浅谈Layui的eleTree树式选择器使用方法
2019/09/25 Javascript
Vue请求java服务端并返回数据代码实例
2019/11/28 Javascript
python中enumerate的用法实例解析
2014/08/18 Python
Python3实现发送QQ邮件功能(html)
2017/12/15 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
2018/09/02 Python
python生成带有表格的图片实例
2019/02/03 Python
pandas 数据结构之Series的使用方法
2019/06/21 Python
Python基于Serializer实现字段验证及序列化
2020/11/04 Python
加拿大鞋子连锁店:Town Shoes
2016/09/26 全球购物
机械工程系毕业生求职信
2013/09/27 职场文书
2014年计生协会工作总结
2014/11/21 职场文书
新员工试用期自我评价
2015/03/10 职场文书
煤矿百日安全活动总结
2015/05/07 职场文书
英语演讲开场白
2015/05/29 职场文书
法制工作总结2015
2015/07/23 职场文书
2019森林防火宣传标语大全!
2019/07/03 职场文书
创业计划书之o2o水果店
2019/08/30 职场文书
CSS3实现模糊背景的三种效果示例
2021/03/30 HTML / CSS
Redis配置外网可访问(redis远程连接不上)的方法
2022/12/24 Redis