基于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判断元素是否是隐藏的代码
Apr 24 Javascript
Javascript call和apply区别及使用方法
Nov 14 Javascript
给js文件传参数(详解)
Jul 13 Javascript
jquery学习总结(超级详细)
Sep 04 Javascript
JavaScript数据结构和算法之图和图算法
Feb 11 Javascript
微信JSSDK上传图片
Aug 23 Javascript
js实现精确到秒的日期选择器完整实例
Apr 30 Javascript
Angular使用ng-messages与PHP进行表单数据验证
Dec 28 Javascript
Bootstrap布局之栅格系统学习笔记
May 04 Javascript
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
Sep 15 Javascript
Angular4的输入属性与输出属性实例详解
Nov 29 Javascript
JS实现点餐自动选择框(案例分析)
Dec 10 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
基于mysql的论坛(3)
2006/10/09 PHP
上传多个文件的PHP脚本
2006/11/26 PHP
详解WordPress中用于合成数组的wp_parse_args()函数
2015/12/18 PHP
PHP程序中使用adodb连接不同数据库的代码实例
2015/12/19 PHP
PHP使用pdo实现事务处理操作示例
2018/09/05 PHP
浅析PHP中json_encode与json_decode的区别
2020/07/15 PHP
Javascript 同时提交多个Web表单的方法
2009/02/19 Javascript
Javascript 判断函数类型完美解决方案
2009/09/02 Javascript
iframe异步加载实现点击左边菜单加载右边内容实例讲解
2013/03/04 Javascript
parentElement,srcElement的使用小结
2014/01/13 Javascript
js实现的倒计时按钮实例
2015/06/24 Javascript
使用jQuery获取data-的自定义属性
2015/11/10 Javascript
easyui-datagrid开发实践(总结)
2017/08/02 Javascript
javascript+jQuery实现360开机时间显示效果
2017/11/03 jQuery
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
2017/12/27 Javascript
layUI实现三级导航菜单效果
2019/07/26 Javascript
js实现AI五子棋人机大战
2020/05/28 Javascript
[01:36:17]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第一场 1月31日
2021/03/11 DOTA
零基础写python爬虫之爬虫编写全记录
2014/11/06 Python
python编程线性回归代码示例
2017/12/07 Python
mac安装scrapy并创建项目的实例讲解
2018/06/13 Python
Python Django框架模板渲染功能示例
2019/11/08 Python
python实现简易淘宝购物
2019/11/22 Python
python判断一个变量是否已经设置的方法
2020/08/13 Python
魔幻般冒泡背景的CSS3按钮动画
2016/02/27 HTML / CSS
英国最大的在线奢侈手表零售商:Jura Watches
2018/01/29 全球购物
.net笔试题
2014/03/03 面试题
介绍一下linux的文件权限
2014/07/20 面试题
商务日语毕业生自荐信范文
2013/11/14 职场文书
酒吧总经理岗位职责
2013/12/10 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
公司借款担保书
2015/09/22 职场文书
2016年12月份红领巾广播稿
2015/12/21 职场文书
考教师资格证不要错过的4个最佳时机
2019/07/17 职场文书
关于CSS浮动与取消浮动的问题
2021/06/28 HTML / CSS
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏