最实用的jQuery分页插件_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
分页插件
自制实用主义分页插件、自制实用分页插件、jquery分页插件、jquery ajax分页插件、jquery分页插件怎么用,以便于您获取更多的相关知识。

时间: 2024-09-29 08:06:00

最实用的jQuery分页插件_jquery的相关文章

分享一个自己动手写的jQuery分页插件_jquery

工作需要一个JS分页插件,心想自己动手写一个吧,一来上网找一个不清楚代码结构的,出了问题难以解决,而且网上的插件所包含的功能太多,有些根本用不到,就没必要加载那段JS,二来想起没写过jQuery插件,就当练一下手了,好了,先看结果: http://demo.jb51.net/js/2014/EasyPage/  简单说一下这个插件所要实现的功能  后台将查询出来的内容全部显示到页面上,这个插件要控制这些内容,使其一页一页显示.有上一页,下一页,首页,尾页的功能.在第一页时,上一页,首页要隐藏.在

jquery分页插件jquery.pagination.js实现无刷新分页_jquery

本文实例为大家分享了jquery分页插件实现无刷新分页的相关代码,供大家参考,具体内容如下 1.使用插件为 jquery.pagination.js ,如果没有这个js文件的话,我可以给发个. 首先引用 jquery.pagination.js (分页js),跟pagination.css(分页样式css). 点击获取查看这两个文件 2.页面js代码为 <script type="text/javascript"> var pageIndex = 0; //页面索引初始值

基于bootstrap3和jquery的分页插件_jquery

自己写的一款基于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为最大页,

基于jquery编写分页插件_jquery

扩展JQuery很容易,作为一个练习,编写一个简单的分页插件,代码量不大,直接看代码好了: $.fn.mypagination = function(totalProperty,opts){ opts = $.extend({ perPage:10, callback:function(){ } },opts||{}); return this.each(function(){ function numPages(){ return Math.ceil(totalProperty/opts.pe

利用JQuery写一个简单的异步分页插件_jquery

写了一个Jquery异步分页插件,拿出来分享一下,有不完善之处请指教. 以用户分页为例,先看一下效果,首先是第一页: 下一页或者点击第二页后: 点击尾页后: 效果还可以吧?来看看具体怎么用,首先后台要有一个Page模型: Page.java: public class Page { /** * 当前页号 */ private int currPageNum = 1; /** * 总记录数 */ private int totalRowSize = 0; /** * 每页记录数 */ privat

简洁实用的BootStrap jQuery手风琴插件_jquery

前端 <html lang="zh"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-s

jquery分页插件jquery.pagination.js使用方法解析_jquery

这一款js分页使用起来很爽,自己经常用,做项目时总是要翻以前的项目看,不方便,这里就把他写出来方便自己以后粘帖,也希望能分享给大家.参数说明 插件代码js代码: /** * This jQuery plugin displays pagination links inside the selected elements. * * @author Gabriel Birke (birke *at* d-scribe *dot* de) * @version 1.1 * @param {int} m

Jquery 分页插件之Jquery Pagination_jquery

实用jQuery分页特效插件jquery.pagination.js,基于jQuery实现,可根据pageselectCallback函数callback调用通过ajax调用动态数据,目前的方法是生成JSON数据到JS文件,调用的数据是JSON格式数据,缺点是数据是一次性读出来的,效率会差些,插件支持众多参数的自定义配置功能,还是很不错的,大家可以根据自己的想法进行改进. 有同学问道jquery的简单分页插件,原来有同事写过一个简单[Javascript 使用回调函数的自定义分页插件--自带样式

jQuery分页插件jBootstrapPage

一个Bootstrap风格的分页控件,对于喜欢Bootstrap简洁美观和扁平化的同学可以关注jBootstrapPage, 目前jBootstrapPage最新版为V0.1,后续还有更多功能需要完善. demo演示地址: http://www.it175.cn/demo/jBootstrapPage/ 代码示例: html代码 <html> <head>     <link href="jBootsrapPage.css" rel="style