美文网首页
分页插件,拿来即用

分页插件,拿来即用

作者: TianTongBo | 来源:发表于2020-01-10 09:27 被阅读0次
效果图 image.png

page.css

.pagingUl{
  float:right;
  padding:0;
  margin:0;
  list-style: none;
}
.pagingUl li{
  float: left;
  width: 30px;
  height: 30px;
  list-style: 30px;
  text-align: center;
}
.pagingUl li a{
  text-decoration: none;
  display: inline-block;
  width: 30px;
  height: 30px;
  text-align: center;
  line-height: 28px;
  padding: 0;
  background: #fafafa;
  color: #666;
  font-size: 12px;
  border: 1px solid #ddd;
}

.prv, .next {
  width: 30px;
  height: 30px;
  float: left;
  text-align: center;
  line-height: 30px;
  border: 1px solid #ddd;
  cursor: pointer;
}
.first, .last {
  width: 40px;
  height: 30px;
  font-size: 12px;
  text-align: center;
  line-height: 30px;
  border: 1px solid #ddd;
  cursor: pointer;
}
 .del-wrap{
    height: 55px;
    width: 100%;
    display: flex;
    align-items: center;
     justify-content: space-between;
    background: #fff;
   margin-top: 20px;
}
   .pagination li a:hover{
   background: #44abf7;
   color: #fff
 }    
 .pagination li a:hover{background: #44abf7;color: #fff}
 .del-wrap .paging .pagination .active1{background:#44abf7;color: #fff;}
 .nowPage p{width: 92%;margin-top: 20px;display: flex;align-items: center}
 .pagingUl li a{background: #fff}
 .pagingUl li .activP{background: #44abf7;color: #fff;border-left: 0;border-right: 0;}

page.js

/* 一个简单的分页,每次点击重渲染
******by wuati*****
*/
var ziArray=[];
var ziArray1=[];
var stateObject = {};
var title = "";
var zz=window.location.search;


if(zz.indexOf('&page=')==-1){
  zz+='&page=1';
}


var lenght;
if(zz){
  var arr01 = zz.split("?");
  var arr02 = arr01[1].split("&");
  for(let x=0;x<arr02.length;x++){
    var arr03 = arr02[x].split("=");
    ziArray[arr03[0]]=arr03[1];
  }
}
else{
  var currentUrl01=window.location.href;
  var newstr=currentUrl01+"?page="+1;
  history.pushState(stateObject,title,newstr);
  var arr00=window.location.href;
  var arr1 = arr00.split("?");
  var arr2 = arr1[1].split("&");
  for(let x=0;x<arr2.length;x++){
    var arr3 = arr2[x].split("=");
    ziArray[arr3[0]]=arr3[1];
  }
  ziArray["page"]="1";
}
(function ($) {
  //默认参数 (放在插件外面,避免每次调用插件都调用一次,节省内存)
  var defaults = {
    //id : '#paging',//id
    leng: 9,//总页数
    activeClass: 'page-active' ,//active类
    firstPage: '首页',//
    lastPage: '末页',
    prv: '«',
    next: '»',
      clickBack:function(){
      }
  };
  var opts,myOptions;
  //扩展
  $.fn.extend({
    //插件名称
    page: function (options) {
      //覆盖默认参数
      myOptions = options
      opts = $.extend(defaults, options);
      //console.log(opts,998,this)
      //主函数
      return this.each(function () {
        //激活事件
        var obj = $(this);
        var str1 = '';
        var str = '';
        var l = opts.leng;
        lenght=opts.leng;
        if (l > 1&&l < 10) {
          str1 = '<li><a href="javascript:" class="'+ opts.activeClass +'">1</a></li>';

          for (var i = 2; i < l + 1; i++) {
            str += '<li><a href="javascript:">' + i + '</a></li>';
            //console.log(i,11)
          }

        }else if(l > 9){
          str1 = '<li><a href="javascript:" class="'+ opts.activeClass +'">1</a></li>';
          for (i = 2; i < 10; i++) {
            str += '<li><a href="javascript:">' + i + '</a></li>';
          }
          //str += '<li><a href="javascript:">...</a></li>'
        } else {
          str1 = '<li><a href="javascript:" class="'+ opts.activeClass +'">1</a></li>';
        }
        obj.html('<div class="next" style="float:right">' + opts.next + '</div><div class="last" style="float:right">' + opts.lastPage + '</div><ul class="pagingUl">' + str1 + str + '</ul><div class="first" style="float:right">' + opts.firstPage + '</div><div class="prv" style="float:right">' + opts.prv + '</div>');

        obj.on('click', '.next', function () {
          var pageshow = parseInt($('.' + opts.activeClass).html());
          if(pageshow+1<l){
            bianHuan(pageshow+1)
          }
          if(pageshow==l){
            return false;
          }
          if(pageshow == l) {
          }else if(pageshow > l-5&&pageshow < l){
            $('.' + opts.activeClass).removeClass(opts.activeClass).parent().next().find('a').addClass(opts.activeClass);
          }else if(pageshow > 0&&pageshow < 6){
            $('.' + opts.activeClass).removeClass(opts.activeClass).parent().next().find('a').addClass(opts.activeClass);
          }else {
            $('.' + opts.activeClass).removeClass(opts.activeClass).parent().next().find('a').addClass(opts.activeClass);
            fpageShow();
          }
          opts.clickBack(pageshow+1)
          //alert(pageshow+1);
        });
        obj.on('click', '.prv', function () {
          var pageshow = parseInt($('.' + opts.activeClass).html());
          if(pageshow-1>0){
            bianHuan(pageshow-1)
          }
          if (pageshow == 1) {
            return false;
          }else if(pageshow > l-5&&pageshow < l+1){
            $('.' + opts.activeClass).removeClass(opts.activeClass).parent().prev().find('a').addClass(opts.activeClass);
                  //this.fpageBranch(pageshow-1);
          }else if(pageshow > 1&&pageshow < 6){
            $('.' + opts.activeClass).removeClass(opts.activeClass).parent().prev().find('a').addClass(opts.activeClass);
                  //this.fpageBranch(pageshow-1);
          }else {
            $('.' + opts.activeClass).removeClass(opts.activeClass).parent().prev().find('a').addClass(opts.activeClass);
                    //this.fpageBranch(pageshow-1);
            fpageShow();
          }
          opts.clickBack(pageshow-1)
          //alert(pageshow-1);
        });

        obj.on('click', '.first', function(){
          var pageshow = 1;
          bianHuan(pageshow)
          var nowshow = parseInt($('.' + opts.activeClass).html());
          if(nowshow==1){
            return false;
          }
          $('.' + opts.activeClass).removeClass(opts.activeClass).parent().prev().find('a').addClass(opts.activeClass);
          fpagePrv(0);
          opts.clickBack(pageshow)
          //alert(pageshow);
        })
        obj.on('click', '.last', function(){
          var pageshow = l;
          bianHuan(pageshow)
          var nowshow = parseInt($('.' + opts.activeClass).html());
          if(nowshow==l){
            return false;
          }
          if(l>9){
            $('.' + opts.activeClass).removeClass(opts.activeClass).parent().prev().find('a').addClass(opts.activeClass);
            fpageNext(8);
          }else{
            $('.' + opts.activeClass).removeClass(opts.activeClass).parent().prev().find('a').addClass(opts.activeClass);
            fpageNext(l-1);
          }
          opts.clickBack(pageshow)
          //alert(pageshow);
        })

        obj.on('click', 'li', function(){
          var $this = $(this);
          var pageshow = parseInt($this.find('a').html());
          bianHuan(pageshow);
          var nowshow = parseInt($('.' + opts.activeClass).html());
         // console.log(l,256)
          if(pageshow==nowshow){
            return false;
          }
          if(l>9){
            //console.log(1234567,pageshow,l)
            if(pageshow > l-5&&pageshow < l+1){
              $('.' + opts.activeClass).removeClass(opts.activeClass);
              $this.find('a').addClass(opts.activeClass);
              fpageNext(8-(l-pageshow));
            }else if(pageshow > 0&&pageshow < 5){
              $('.' + opts.activeClass).removeClass(opts.activeClass);
              $this.find('a').addClass(opts.activeClass);
              fpagePrv(pageshow-1);
            }else{
              $('.' + opts.activeClass).removeClass(opts.activeClass);
              $this.find('a').addClass(opts.activeClass);
              fpageShow();
            }
          }else{
            //console.log(123456)
            $('.' + opts.activeClass).removeClass(opts.activeClass);
            $this.find('a').addClass(opts.activeClass);
          }
          opts.clickBack(pageshow)
        })
        bian();
        function fpageShow(){
          var pageshow = parseInt($('.' + opts.activeClass).html());
          var pageStart = pageshow - 4;
          var pageEnd = pageshow + 5;
          var str1 = '';
          for(i=0;i<9;i++){
            str1 += '<li><a href="javascript:" class="">' + (pageStart+i) + '</a></li>'
          }
          obj.find('ul').html(str1);
          obj.find('ul li').eq(4).find('a').addClass(opts.activeClass);
              
        }

        function fpagePrv(prv){
          var str1 = '';
          if(l>8){
            for(i=0;i<9;i++){
              str1 += '<li><a href="javascript:" class="">' + (i+1) + '</a></li>'
            }
          }else{
            for(i=0;i<l;i++){
              str1 += '<li><a href="javascript:" class="">' + (i+1) + '</a></li>'
            }
          }
          obj.find('ul').html(str1);
          obj.find('ul li').eq(prv).find('a').addClass(opts.activeClass);
        }

        function fpageNext(next){
          var str1 = '';
          if(l>8){
            for(i=l-8;i<l+1;i++){
              str1 += '<li><a href="javascript:" class="">' + i + '</a></li>'
            }
           obj.find('ul').html(str1);
           obj.find('ul li').eq(next).find('a').addClass(opts.activeClass);
          }else{
            for(i=0;i<l;i++){
              str1 += '<li><a href="javascript:" class="">' + (i+1) + '</a></li>'
            }
           obj.find('ul').html(str1);
           obj.find('ul li').eq(next).find('a').addClass(opts.activeClass);
          }
        }
        
        //刷新不变
        function bian() {
          $('.pagingUl li').find('a').removeClass(opts.activeClass);
          for(let x=0;x<$('.pagingUl li').length;x++){
            if(parseInt($('.pagingUl li').eq(x).find('a').html())==parseInt(ziArray['page'])){
              if($('.pagingUl li').eq(x)){
                $('.pagingUl li').eq(x).find('a').addClass(opts.activeClass);
              }
            }
            else{
              var pageshow = parseInt(ziArray['page']);
              var bianhuanPan=pageshow + 5-lenght;
              var bainahunPan0=pageshow - 4;
              if(bianhuanPan>=5){
                var pageStart = pageshow - 8;
                var pageEnd = pageshow + 0;
              }
              if(bianhuanPan==4){
                var pageStart = pageshow - 7;
                var pageEnd = pageshow + 1;
              }
              if(bianhuanPan==3){
                var pageStart = pageshow - 6;
                var pageEnd = pageshow + 2;
              }
              if(bianhuanPan==2){
                var pageStart = pageshow - 5;
                var pageEnd = pageshow + 3;
              }
              if(bianhuanPan==1){
                var pageStart = pageshow - 4;
                var pageEnd = pageshow + 4;
              }
              if(bianhuanPan<=0){
                var pageStart = pageshow - 4;
                var pageEnd = pageshow + 5;
                if(bainahunPan0==0){
                  var pageStart = pageshow - 3;
                  var pageEnd = pageshow + 6;
                }
                if(bainahunPan0==-1){
                  var pageStart = pageshow - 2;
                  var pageEnd = pageshow + 7;
                }
                if(bainahunPan0==-2){
                  var pageStart = pageshow - 1;
                  var pageEnd = pageshow + 8;
                }
                if(bainahunPan0==-3){
                  var pageStart = pageshow - 0;
                  var pageEnd = pageshow + 9;
                }
              }
              var str1 = '';

            if(9-l>=0){

              for(i=9;i<0;i--){
                str1 += '<li><a href="javascript:" class="">' + (pageEnd-i) + '</a></li>'
              }
              for(i=9-l;i<9;i++){
                //i=3
                if(pageStart==1){
                  str1 += '<li><a href="javascript:" class="">' + (pageStart+i+l-9) + '</a></li>'
                }else {
                  str1 += '<li><a href="javascript:" class="">' + (pageStart+i) + '</a></li>'
                }

              }

            }else{

              for(i=9;i<0;i--){
                str1 += '<li><a href="javascript:" class="">' + (pageEnd-i) + '</a></li>'
              }
              for(i=0;i<9;i++){
                str1 += '<li><a href="javascript:" class="">' + (pageStart+i) + '</a></li>'
              }

            }


              obj.find('ul').html(str1);
              for(let x=0;x<$('.pagingUl li').length;x++){
                if(parseInt($('.pagingUl li').eq(x).find('a').html())==pageshow){
                  if($('.pagingUl li').eq(x)){
                    $('.pagingUl li').eq(x).find('a').addClass(opts.activeClass);
                  }
                }
              }
            }
          }
        }
        //返回变化
        window.addEventListener('popstate', function (){
          var arr00=window.location.href;
          var arr1 = arr00.split("?");
          var arr2 = arr1[1].split("&");
          for(let x=0;x<arr2.length;x++){
            var arr3 = arr2[x].split("=");
            ziArray1[arr3[0]]=arr3[1];
          }
          ziArray["page"]=ziArray1["page"];
          bian();
        });
      });
    },
    setLength: function(newLength){
      myOptions.leng = newLength
      $(this).html('')
      $(this).unbind()
      $(this).page(myOptions)
    }
  })
})(jQuery);
function bianHuan(pageshow){
  var currentUrl01=window.location.href;
  var arr01 = currentUrl01.split("?");
  ziArray["page"]=""+pageshow+"";
  var zi="";
  for(var xi in ziArray){
    zi+=xi+"="+ziArray[xi]+"&";
  }
  if(zi.substr(zi.length-1,zi.length)=="&"){
    zi=zi.substr(0,zi.length-1)
  }
  var newstr=arr01[0]+"?"+zi;
  //console.log(newstr)
  location.href=newstr
  //history.pushState(stateObject,title,newstr);
  //location.reload()
  //console.log($('.pagingUl li').length);
  //console.log(parseInt(ziArray['page']));
}

HTML

       <div class="del-wrap" style="margin-bottom: 60px">
                <div class="dispX">
                    
                </div>
                <div class="pageData" style="display: flex;align-items: center;margin-right: 90px;">
                    <div>共<span><?php echo $pageInfo['totalitem']?></span>条数据&nbsp;<span><?php echo ceil($pageInfo['totalitem']/10)?></span>&nbsp;页</div>&nbsp;
                    <div class="pageTest"></div>
                </div>
           </div>
<script type="text/javascript">
         
       var allpage=Math.ceil(<?php echo $pageNum ?>/10); //$pageNum后台返回的数据总条数
        $('.pageTest').page({
            leng:allpage,//分页总数
            activeClass: 'activP' , //active 类样式定义
            clickBack:function(page){
            }
        });
    </script>

相关文章

网友评论

      本文标题:分页插件,拿来即用

      本文链接:https://www.haomeiwen.com/subject/uihpactx.html