基于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和CSS速查手册
Aug 20 Javascript
js同时按下两个方向键
Dec 01 Javascript
Javascript的一种模块模式
Mar 22 Javascript
jQuery实现的立体文字渐变效果
May 17 Javascript
JQuery for与each性能比较分析
May 14 Javascript
JavaScript使用循环和分割来替换和删除元素实例
Oct 13 Javascript
浅析AngularJS中的生命周期和延迟处理
Jun 18 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(二)
Sep 14 Javascript
Node.js和Express简单入门介绍
Mar 24 Javascript
Webpack执行命令参数详解
Jun 17 Javascript
微信小程序实现下载进度条的方法
Dec 08 Javascript
利用原生js实现html5小游戏之打砖块(附源码)
Jan 03 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 将excel导入mysql
2009/11/09 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
2018/10/16 PHP
JS打开新窗口的2种方式
2013/04/18 Javascript
jQuery实现contains方法不区分大小写的方法
2015/02/13 Javascript
JavaScript淡入淡出渐变简单实例
2015/08/06 Javascript
如何实现JavaScript动态加载CSS和JS文件
2020/12/28 Javascript
JQuery datepicker 用法详解
2015/12/25 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
js密码强度实时检测代码
2016/03/02 Javascript
JS加载iFrame出现空白问题的解决办法
2016/05/13 Javascript
JS在浏览器中解析Base64编码图像
2017/02/09 Javascript
jQuery设置图片等比例缩小的方法
2017/04/29 jQuery
JS检测window.open打开的窗口是否关闭
2017/06/25 Javascript
详解webpack4多入口、多页面项目构建案例
2018/05/25 Javascript
react 中父组件与子组件双向绑定问题
2019/05/20 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
Python 变量类型及命名规则介绍
2013/06/08 Python
Python中AND、OR的一个使用小技巧
2015/02/18 Python
Python的Flask框架的简介和安装方法
2015/11/13 Python
详解Python的Lambda函数与排序
2016/10/25 Python
python虚拟环境完美部署教程
2019/08/06 Python
python中struct模块之字节型数据的处理方法
2019/08/27 Python
Python如何截图保存的三种方法(小结)
2020/09/01 Python
python统计mysql数据量变化并调用接口告警的示例代码
2020/09/21 Python
python 根据列表批量下载网易云音乐的免费音乐
2020/12/03 Python
苹果中国官方网站:Apple中国
2016/07/22 全球购物
Agoda西班牙:全球特价酒店预订
2017/06/03 全球购物
IWOOT美国:新奇的小玩意
2018/04/27 全球购物
大学团支书的自我评价分享
2013/12/14 职场文书
2014年安全生产大检查方案
2014/05/13 职场文书
三好学生事迹材料
2014/12/24 职场文书
2015年幼儿园教研活动总结
2015/03/25 职场文书
党支部创先争优公开承诺书
2015/04/30 职场文书
入党群众意见范文
2015/06/02 职场文书
聊聊基于pytorch实现Resnet对本地数据集的训练问题
2022/03/25 Python
Go调用Rust方法及外部函数接口前置
2022/06/14 Golang