基于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 相关文章推荐
百度地图api应用标注地理位置信息(js版)
Feb 01 Javascript
jquery解决图片路径不存在执行替换路径
Feb 06 Javascript
javascript 面向对象封装与继承
Nov 27 Javascript
jquery插件ContextMenu设置右键菜单
Mar 13 Javascript
浅谈Node.js ORM框架Sequlize之表间关系
Jul 24 Javascript
js实现方块上下左右移动效果
Aug 17 Javascript
基于JSON数据格式详解
Aug 31 Javascript
Angularjs中的$apply及优化使用详解
Jul 02 Javascript
详解vue中使用微信jssdk
Apr 19 Javascript
jquery ui 实现 tab标签功能示例【测试可用】
Jul 25 jQuery
JS面向对象之单选框实现
Jan 17 Javascript
JS数组方法reverse()用法实例分析
Jan 18 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中session定期自动清理的方法
2015/11/12 PHP
关于PHP通用返回值设置方法
2017/03/31 PHP
JS自动缩小超出大小的图片
2012/10/12 Javascript
JS delegate与live浅析
2013/12/21 Javascript
JavaScript操作XML/HTML比较常用的对象属性集锦
2015/10/30 Javascript
JQUERY表单暂存功能插件分享
2016/02/23 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
Bootstrap框架的学习教程详解(二)
2016/10/18 Javascript
Angular.js跨controller实现参数传递的两种方法
2017/02/20 Javascript
JavaScript中Promise的使用详解
2017/02/26 Javascript
浅谈react.js中实现tab吸顶效果的问题
2017/09/06 Javascript
详解Node.js利用node-git-server快速搭建git服务器
2017/09/27 Javascript
JavaScript时间戳与时间日期间相互转换
2017/12/11 Javascript
elementui的默认样式修改方法
2018/02/23 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
[40:27]完美世界DOTA2联赛PWL S3 PXG vs GXR 第一场 12.19
2020/12/24 DOTA
Python+Wordpress制作小说站
2017/04/14 Python
python生成随机图形验证码详解
2017/11/08 Python
在Python web中实现验证码图片代码分享
2017/11/09 Python
python实现守护进程、守护线程、守护非守护并行
2018/05/05 Python
python打开windows应用程序的实例
2019/06/28 Python
Python API自动化框架总结
2019/11/12 Python
wxPython+Matplotlib绘制折线图表
2019/11/19 Python
在Matplotlib图中插入LaTex公式实例
2020/04/17 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
2020/08/31 Python
美国二手复古奢侈品包包购物网站:LXRandCo
2019/06/18 全球购物
性能测试工程师的面试题
2015/02/20 面试题
公司庆典邀请函范文
2014/01/13 职场文书
绿色学校实施方案
2014/03/31 职场文书
工作检讨书怎么写
2014/10/10 职场文书
2014教师评职称工作总结
2014/11/10 职场文书
不尊敬老师的检讨书
2014/12/21 职场文书
2015年招商引资工作总结
2015/04/25 职场文书
vue实现同时设置多个倒计时
2021/05/20 Vue.js
详解CSS中的特指度和层叠问题
2021/07/15 HTML / CSS
《游戏王:大师决斗》将推出新卡牌包4月4日上线
2022/03/31 其他游戏