基于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事件冒泡
Jul 17 Javascript
javascript倒计时效果实现
Nov 12 Javascript
关于angularJs指令的Scope(作用域)介绍
Oct 25 Javascript
vue2.0s中eventBus实现兄弟组件通信的示例代码
Oct 25 Javascript
vue2.0 自定义 饼状图 (Echarts)组件的方法
Mar 02 Javascript
微信小程序配置服务器提示验证token失败的解决方法
Apr 03 Javascript
vue列表单项展开收缩功能之this.$refs的详解
May 05 Javascript
如何测量vue应用运行时的性能
Jun 21 Javascript
javascript实现摄像头拍照预览
Sep 30 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
Apr 10 Javascript
vue 出现data-v-xxx的原因及解决
Aug 04 Javascript
Vue全局事件总线你了解吗
Feb 24 Vue.js
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
骨王战斗力在公会成员中排不进前五,却当选了会长,原因竟是这样
2020/03/02 日漫
重量级动漫纷纷停播!唯独OVERLORD第四季正在英魂之刃继续更新
2020/05/06 日漫
Apache2中实现多网站域名绑定的实现方法
2011/06/01 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
配置Nginx+PHP的正确思路与过程
2016/05/10 PHP
PHP 二级子目录(后台目录)设置二级域名
2017/03/02 PHP
php读取本地json文件的实例
2018/03/07 PHP
6个常见的 PHP 安全性攻击实例和阻止方法
2020/12/16 PHP
javascript读取RSS数据
2007/01/20 Javascript
jquery绑定原理 简单解析与实现代码分享
2011/09/06 Javascript
JavaScript高级程序设计 XML、Ajax 学习笔记
2011/09/10 Javascript
判断对象是否Window的实现代码
2012/01/10 Javascript
详解JavaScript ES6中的模板字符串
2015/07/28 Javascript
深入分析node.js的异步API和其局限性
2016/09/05 Javascript
9个让JavaScript调试更简单的Console命令
2016/11/14 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
20行js代码实现的贪吃蛇小游戏
2017/06/20 Javascript
详解Angular之constructor和ngOnInit差异及适用场景
2017/06/22 Javascript
vue2.0 自定义 饼状图 (Echarts)组件的方法
2018/03/02 Javascript
Angular4 组件通讯方法大全(推荐)
2018/07/12 Javascript
JavaScript面向对象程序设计创建对象的方法分析
2018/08/13 Javascript
JavaScript中this的全面解析及常见实例
2019/05/14 Javascript
跟老齐学Python之赋值,简单也不简单
2014/09/24 Python
10款最好的Web开发的 Python 框架
2015/03/18 Python
Python+django实现简单的文件上传
2016/08/17 Python
详解python之配置日志的几种方式
2017/05/22 Python
python2.7+selenium2实现淘宝滑块自动认证功能
2018/02/24 Python
Python实现繁?转为简体的方法示例
2018/12/18 Python
基于Python获取docx/doc文件内容代码解析
2020/02/17 Python
Mac PyCharm中的.gitignore 安装设置教程
2020/04/16 Python
旧时光糖果:Old Time Candy
2018/02/05 全球购物
汽车质检员岗位职责
2015/04/08 职场文书
于丹讲座视频观后感
2015/06/15 职场文书
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server
Python中Selenium对Cookie的操作方法
2021/07/09 Python