jq实现分页组件

分页样式如下:
HTML: 
<div id="page1" class="page_div"></div>
<script src="js/paging.js"></script>

js:

$("#page1").paging({
    pageNo: 1,  // 当前页
    totalPage: 2,  // 总页数(可以用Math.ceil()向上取整来计算)
    totalSize: 5,  //总条数
    callback: function(num) {
        console.log('当前页:'+num);
    }
})

CSS:

/*
* 外层div样式,按需更改
*/
.page_div {
    margin-top: 20px;
    margin-bottom: 20px;
    font-size: 15px;
    font-family: "microsoft yahei";
    color: #666666;
    margin-right: 30px;
    padding-left: 20px;
    box-sizing: border-box;
    float: right;
}
/*
* 页数按钮样式
*/
.page_div a {
    min-width: 30px;
    height: 28px;
    border: 1px solid #dce0e0!important;
    text-align: center;
    margin: 0 4px;
    cursor: pointer;
    line-height: 28px;
    color: #666666;
    font-size: 13px;
    display: inline-block;
    background: #fff;
}
#firstPage, #lastPage {
    width: 50px;
    color: #0073A9;
    border: 1px solid #0073A9!important;
}
#prePage, #nextPage {
    width: 70px;
    color: #0073A9;
    border: 1px solid #0073A9!important;
}
.page_div .current {
    background-color: #0073A9;
    border-color: #0073A9;
    color: #FFFFFF;
}

.totalPages {
    margin: 0 10px;
    color: #fff;
}
.totalSize {
    color: #fff;
}
.totalPages span, .totalSize span {
    margin: 0 5px;
}

paging.js :

(function($, window, document, undefined) {
  //定义分页类
  function Paging(element, options) {
    this.element = element;
    //传入形参
    this.options = {
      pageNo: options.pageNo||1,
      totalPage: options.totalPage,
      totalSize:options.totalSize,
      callback:options.callback
    };
    //根据形参初始化分页html和css代码
    this.init();
  }
  //对Paging的实例对象添加公共的属性和方法
  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;
      var totalNum = me.options.totalSize;
      content += "<a id=\"firstPage\">首页</a><a id='prePage'>上一页</a>";
      //总页数大于6时候
      if(total > 6) {
        //当前页数小于5时显示省略号
        if(current < 5) {
          for(var i = 1; i < 6; 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) {
            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 - 4; i < total + 1; i++) {
              if(current == i) {
                content += "<a class='current'>" + i + "</a>";
              } else {
                content += "<a>" + i + "</a>";
              }
            }
          }
        }
        //页面总数小于6的时候
      } else {
        for(var i = 1; i < total + 1; i++) {
          if(current == i) {
            content += "<a class='current'>" + i + "</a>";
          } else {
            content += "<a>" + i + "</a>";
          }
        }
      }
      content += "<a id='nextPage'>下一页</a>";
      content += "<a id=\"lastPage\">尾页</a>";
      content += "<span class='totalPages'> 共<span>"+total+"</span>页 </span>";
      content += "<span class='totalSize'> 共<span>"+totalNum+"</span>条记录 </span>";
      me.element.html(content);
    },
    //添加页面操作事件
    bindEvent: function() {
      var me = this;
      me.element.off('click', 'a');
      me.element.on('click', 'a', function() {
        var num = $(this).html();
        var id=$(this).attr("id");
        if(id == "prePage") {
          if(me.options.pageNo == 1) {
            me.options.pageNo = 1;
          } else {
            me.options.pageNo = +me.options.pageNo - 1;
          }
        } else if(id == "nextPage") {
          if(me.options.pageNo == me.options.totalPage) {
            me.options.pageNo = me.options.totalPage
          } else {
            me.options.pageNo = +me.options.pageNo + 1;
          }

        } else if(id =="firstPage") {
          me.options.pageNo = 1;
        } else if(id =="lastPage") {
          me.options.pageNo = me.options.totalPage;
        }else{
          me.options.pageNo = +num;
        }
        me.creatHtml();
        if(me.options.callback) {
          me.options.callback(me.options.pageNo);
        }
      });
    }
  };
  //通过jQuery对象初始化分页对象
  $.fn.paging = function(options) {
    return new Paging($(this), options);
  }
})(jQuery, window, document);

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值