最实用的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脚本
Dec 12 Javascript
jQuery)扩展jQuery系列之一 模拟alert,confirm(一)
Dec 04 Javascript
jQuery性能优化28条建议你值得借鉴
Feb 16 Javascript
Jquery实现视频播放页面的关灯开灯效果
May 27 Javascript
浅析javascript操作 cookie对象
Dec 26 Javascript
javascript实现限制上传文件大小
Feb 06 Javascript
Vuex之理解Store的用法
Apr 19 Javascript
Javascript循环删除数组中元素的几种方法示例
May 18 Javascript
详解angular路由高亮之RouterLinkActive
Apr 28 Javascript
如何解决.vue文件url引用文件的问题
Jan 18 Javascript
jquery实现点击弹出对话框
Feb 08 jQuery
微信小程序实现点击导航条切换页面
Nov 19 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
抓取YAHOO股票报价的类
2009/05/15 PHP
PHP 文件扩展名 获取函数
2009/06/03 PHP
Zend Framework中的简单工厂模式 图文
2012/07/10 PHP
php防止恶意刷新与刷票的方法
2014/11/21 PHP
PHP控制前台弹出对话框的实现方法
2016/08/21 PHP
PHP读取、解析eml文件及生成网页的方法示例
2017/09/04 PHP
javascript 火狐(firefox)不显示本地图片问题解决
2008/07/05 Javascript
jquery中使用ajax获取远程页面信息
2011/11/13 Javascript
Javascript中3种实现继承的方法和代码实例
2014/08/12 Javascript
javascript实现框架高度随内容改变的方法
2015/07/23 Javascript
vue2.0模拟锚点的实例
2018/03/14 Javascript
详解Vue文档中几个易忽视部分的剖析
2018/03/24 Javascript
利用nodeJs anywhere搭建本地服务器环境的方法
2018/05/12 NodeJs
Layui table field初始化加载时进行隐藏的方法
2019/09/19 Javascript
Python文件读取的3种方法及路径转义
2015/06/21 Python
详解python3中zipfile模块用法
2018/06/18 Python
Python3使用pandas模块读写excel操作示例
2018/07/03 Python
python中的for循环
2018/09/28 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
2020/06/18 Python
深入浅析Python代码规范性检测
2020/07/31 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
2020/08/17 Python
Python pip install之SSL异常处理操作
2020/09/03 Python
美国畅销的跑步机品牌:ProForm
2017/02/06 全球购物
法国亚马逊官方网站:Amazon.fr
2020/12/19 全球购物
DOM和JQuery对象有什么区别
2016/11/11 面试题
高中毕业生个人自我鉴定
2013/11/24 职场文书
学习雷锋做美德少年寄语大全
2014/04/09 职场文书
大三学习计划书范文
2014/05/02 职场文书
经典团队口号
2014/06/06 职场文书
公司会议开幕词
2015/01/29 职场文书
2015年乡镇流动人口工作总结
2015/05/12 职场文书
理想国读书笔记
2015/06/25 职场文书
导游词之香港-太平山顶
2019/10/18 职场文书
导游词之北京明十三陵
2019/10/28 职场文书
十一月早安语录:把心放轻,人生就是一朵自在的云
2019/11/04 职场文书
详解Anyscript开发指南绕过typescript类型检查
2022/09/23 Javascript