最实用的jQuery分页插件


Posted in Javascript onOctober 09, 2016

在做商城和订单管理的时候,常常会用到分页功能,所以我封装了一个jQuery的分页插件,该插件主要实现上下翻页,输入数字跳转等功能。

最实用的jQuery分页插件

具体实现如下:

输入参数需要当前页码pageNo,总页码totalPage,回调函数callback。

主要的实现有两个函数,一个是根据当前页和总页数生成相应的html的代码,一个是事件绑定及回调函数的执行。

creatHtml函数:

creatHtml:function(){
 var me=this;
 var content="";
//当前页码
 var current=me.options.pageNo;

//总页码
 var total=me.options.totalPage;

//当前页码大于1显示向上翻页按钮
 if(current > 1){
 content += "<a><</a>";
 }

//总页数大于7,根据当前页显示省略号,否则显示全部页码
 if(total > 7){
 if(current < 4){
  for(var i=1;i<7;i++){
  if(current==i){
   content += "<a class='current'>"+i+"</a>";
  }else{
   content += "<a>"+i+"</a>";
  }
  }
  content += "...";
  content += "<a>"+total+"</a>";
 }else{
  if(current < total - 3){
  content += "<a name='1' type='button' class='page num'>1</a>";
  content += "...";
  for(var i=current-2;i<current+3;i++){
   if(current==i){
   content += "<a class='current'>"+i+"</a>";
   }else{
   content += "<a>"+i+"</a>";
   }
  }
  content += "...";
  content += "<a>"+total+"</a>";
  }else{
  content += "<a>1</a>";
  content += "...";
  for(var i=total-5;i<total+1;i++){
   if(current==i){
   content += "<a class='current'>"+i+"</a>";
   }else{
   content += "<a>"+i+"</a>";
   }
  }
  }
 }
 }else{
 for(var i=1;i<total+1;i++){
  if(current==i){
  content += "<a class='current'>"+i+"</a>";
  }else{
  content += "<a>"+i+"</a>";
  }
 }
 }

//当前页小于总页数,显示向下翻页按钮
 if(current < total){
 content += "<a>></a>";
 }

//输入跳转
 content += " 到第 ";
 content += "<input max='3' maxlength='3' value='"+current+"' type='text' />";
 content += " 页 ";
 content += "<a>Go</a>";

//更新HTML
 me.element.html(content);
}

bindEvent函数:

bindEvent:function(){
 var me=this;
//分页点击事件
 me.element.on('click','a',function(){
 var num=$(this).html();
 if(num=="<"){//上翻
  me.options.pageNo=+me.options.pageNo-1;
 }else if(num==">"){//下翻
  me.options.pageNo=+me.options.pageNo+1;
 }else if(num=="Go"){//输入页码跳转
  var ipt=+me.element.find('input').val();
  if(ipt&&ipt<=me.options.totalPage&&ipt!=me.options.pageNo){
  me.options.pageNo=ipt;
  }
 }else{//直接跳转
  me.options.pageNo=+num;
 }


//更新html
 me.creatHtml();


//调用回调函数,返回当前页码
 if(me.options.callback){
  me.options.callback(me.options.pageNo);
 }
 });
}

将函数封装起来,完整如下:

;(function($,window,document,undefined){
 var initDate={
 pageNo:1,
 totalPage:1,
 callback:function(){}
 };
 function Paging(element,options){
 this.element = element;
 this.options=options=$.extend(initDate,options||{});
 this.init();
 }
 Paging.prototype={ 
 constructor:Paging,
 init:function(){
  this.creatHtml();
  this.bindEvent();
 },
 creatHtml:function(){
  var me=this;
  var content="";
  var current=me.options.pageNo;
  var total=me.options.totalPage;
  if(current > 1){
  content += "<a><</a>";
  }
  if(total > 7){
  if(current < 4){
   for(var i=1;i<7;i++){
   if(current==i){
    content += "<a class='current'>"+i+"</a>";
   }else{
    content += "<a>"+i+"</a>";
   }
   }
   content += "...";
   content += "<a>"+total+"</a>";
  }else{
   if(current < total - 3){
   content += "<a name='1' type='button' class='page num'>1</a>";
   content += "...";
   for(var i=current-2;i<current+3;i++){
    if(current==i){
    content += "<a class='current'>"+i+"</a>";
    }else{
    content += "<a>"+i+"</a>";
    }
   }
   content += "...";
   content += "<a>"+total+"</a>";
   }else{
   content += "<a>1</a>";
   content += "...";
   for(var i=total-5;i<total+1;i++){
    if(current==i){
    content += "<a class='current'>"+i+"</a>";
    }else{
    content += "<a>"+i+"</a>";
    }
   }
   }
  }
  }else{
  for(var i=1;i<total+1;i++){
   if(current==i){
   content += "<a class='current'>"+i+"</a>";
   }else{
   content += "<a>"+i+"</a>";
   }
  }
  }
  if(current < total){
  content += "<a>></a>";
  }
  content += " 到第 ";
  content += "<input max='3' maxlength='3' value='"+current+"' type='text' />";
  content += " 页 ";
  content += "<a>Go</a>";
  me.element.html(content);
 },
 bindEvent:function(){
  var me=this;
  me.element.on('click','a',function(){
  var num=$(this).html();
  if(num=="<"){
   me.options.pageNo=+me.options.pageNo-1;
  }else if(num==">"){
   me.options.pageNo=+me.options.pageNo+1;
  }else if(num=="Go"){
   var ipt=+me.element.find('input').val();
   if(ipt&&ipt<=me.options.totalPage&&ipt!=me.options.pageNo){
   me.options.pageNo=ipt;
   }
  }else{
   me.options.pageNo=+num;
  }
  me.creatHtml();
  if(me.options.callback){
   me.options.callback(me.options.pageNo);
  }
  });
 }
 };
 $.fn.paging=function(options){
 options=$.extend(initDate,options||{});
 return new Paging($(this),options);
 }
})(jQuery,window,document);

HTML:

<div id="page"></div>

js引用:

$('#page').paging({pageNo:2,totalPage:10,callback:function(cur){
 console.log(‘当前页:'+cur);//当前页:2
}});

这里加了一些简单的样式,可以根据具体的ui设计来设计样式。

<style type="text/css">
 a{
 width: 23px;
 height: 23px;
 border: 1px solid #dce0e0;
 text-align: center;
 margin: 0 4px;
 cursor: pointer;
 display: inline-block;
 }
 .current{
 background-color: #5ac3e7;
 }
 </style>

github地址:https://github.com/Martian1/jQuery.paging.js

更多精彩内容请点击:jquery分页功能汇总进行学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用js编写的简单的计算器代码程序
Aug 04 Javascript
js实现模拟银行卡账号输入显示效果
Nov 18 Javascript
Bootstrap响应式侧边栏改进版
Sep 17 Javascript
JS正则替换掉小括号及内容的方法
Nov 29 Javascript
iscroll.js滚动加载实例详解
Jul 18 Javascript
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
Oct 25 Javascript
利用Vue2.x开发实现JSON树的方法
Jan 04 Javascript
vue 开发一个按钮组件的示例代码
Mar 27 Javascript
vue增加强缓存和版本号的实现方法
May 01 Javascript
解决Layui中layer报错的问题
Sep 03 Javascript
webpack是如何实现模块化加载的方法
Nov 06 Javascript
vue 将多个过滤器封装到一个文件中的代码详解
Sep 05 Javascript
js本地图片预览实现代码
Oct 09 #Javascript
js html css实现复选框全选与反选
Oct 09 #Javascript
不间断循环滚动效果的实例代码(必看篇)
Oct 08 #Javascript
关于JavaScript和jQuery的类型判断详解
Oct 08 #Javascript
js基本算法:冒泡排序,二分查找的简单实例
Oct 08 #Javascript
javascript中获取元素标签中间的内容的实现方法
Oct 08 #Javascript
Jquery和Js获得元素标签名称的方法总结
Oct 08 #Javascript
You might like
德劲1103二次变频版的打磨
2021/03/02 无线电
php下pdo的mysql事务处理用法实例
2014/12/27 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
2017/01/21 PHP
JavaScript 学习笔记(十六) js事件
2010/02/01 Javascript
javascript调试说明
2010/06/07 Javascript
js 中将多个逗号替换为一个逗号的代码
2014/06/07 Javascript
jquery中each方法示例和常用选择器
2014/07/08 Javascript
jQuery中ajax和post处理json的不同示例对比
2014/11/02 Javascript
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
JS实现鼠标点击展开或隐藏表格行的方法
2015/03/03 Javascript
JS+CSS实现TreeMenu二级树形菜单完整实例
2015/09/18 Javascript
Javascript中八种遍历方法的执行速度深度对比
2017/04/25 Javascript
Vue点击切换Class变化,实现Active当前样式操作
2020/07/17 Javascript
基于js实现判断浏览器类型代码实例
2020/07/17 Javascript
JS+css3实现幻灯片轮播图
2020/08/14 Javascript
通过高德地图API获得某条道路上的所有坐标用于描绘道路的方法
2020/08/24 Javascript
对python中的xlsxwriter库简单分析
2018/05/04 Python
python实现黑客字幕雨效果
2018/06/21 Python
python 二维数组90度旋转的方法
2019/01/28 Python
关于Python核心框架tornado的异步协程的2种方法详解
2019/08/28 Python
CSS3的新特性介绍
2008/10/31 HTML / CSS
SEPHORA新西兰官方网站:购买化妆品和护肤品
2016/12/02 全球购物
New Balance加拿大官方网站:运动鞋和健身服装
2018/11/19 全球购物
吉尔德利巧克力公司:Ghirardelli Chocolate Company
2019/03/27 全球购物
台湾全方位线上课程与职能学习平台:TibaMe
2019/12/04 全球购物
预备党员党课思想汇报
2014/01/13 职场文书
仓库组长岗位职责
2014/01/29 职场文书
公务员更新知识培训实施方案
2014/03/31 职场文书
会计系毕业求职信
2014/08/07 职场文书
爱祖国爱家乡演讲稿
2014/09/02 职场文书
2014年文秘工作总结
2014/11/25 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
幼儿园开学家长寄语(2016春季)
2015/12/03 职场文书
使用GO语言实现Mysql数据库CURD的简单示例
2021/08/07 Golang
Python爬虫入门案例之回车桌面壁纸网美女图片采集
2021/10/16 Python
数据分析数据库ClickHouse在大数据领域应用实践
2022/04/03 MySQL