• Jquery、Ajax实现新闻列表页分页功能


    前端页面官网的开发,离不开新闻列表,新闻列表一般都会有分页的功能,下面是我自己总结加查找网上资料写的一个分页的功能,记录一下。

    首先,官网的开发建立在前后端分离的基础上;

    再有,后端小伙伴们提供列表页数据的接口;

    最后,从接口拿数据,渲染到页面上。

    如图,点击上一页返回前面一页的数据,点击下一页,返回后面一页的数据,点击1、2...跳转到相应的页面的数据。

    上代码,先来布局部分html代码

    <div class="main-list-col">
       <div class="list-main-lists main-lists-lastest"></div>   //存放获取的数据内容
          <div class="list-pages listpage-latest">
             <a href="javascript:" class="pre-page"></a>   //上一页
             <div class="pagesin"></div>                    //页码数
             <a href="javascript:" class="next-page"></a>  //下一页
             <a href="javascript:" class="cur-page"></a>   //第几页
             <a href="javascript:" class="all-page"></a>   //共几页
          </div>
    </div>

    布局其实很清楚,类名就表示了每个对应的内容是什么。

    对应js部分代码

    var totlePage,totleSize;        //声明变量,总页数totlepage,列表页总新闻条数totleSize
    var curPage = 1;                //设置当前页为curPage=1第一页
    getnewsList(1);                 //页面加载时,默认获取的是第一页的数据;getNewsList()获取页面数据Ajax的函数;
     $(".listpage-latest .pagesin").on("click","a",function(){      //每页页码,及点击页码相应的跳转;页码需要根据获取的总数据条数计算出来并拼到页面上,所以js事件要用on,一定要用on,不然点击事件没有效果
          $(".main-lists-lastest").empty();   //不管到哪一步,点击页码首页得清除那个页面的数据,再加载新的内容进去,所以empty了解一下,我这里用了a标签的rel属性来判断加载
          var rel = $(this).attr("rel");
          curPage = rel;
          console.log(rel);
          if(rel){
            getnewsList(rel);
            $(this).eq(rel).addClass("active-pages");
          }
      });
    $(".listpage-latest .next-page").click(function(event){   //下一页
        $(".main-lists-lastest").empty(); 
        if(curPage > totlePage-1){   //如果当前页码大于总页码就只加载最后一页,并弹框
          curPage = totlePage;
          alert("the last page");
          getnewsList(curPage);
        }else{
          curPage++;
          getnewsList(curPage);
        }
      });
    $(".listpage-latest .pre-page").click(function(event){   //上一页
          $(".main-lists-lastest").empty(); 
          if(curPage < 2){  //如果当前页码小于第一页就只加载第一页,并弹框
            curPage = 1;
            getnewsList(1); 
            alert("the first page");
          }else{
            curPage--;
            getnewsList(curPage); 
          }
      });
    function getnewsList(page){   //Ajax获取新闻列表的数据内容
        $.ajax({
          type: "GET",
          url: "https://",   //后端小伙伴给的新闻列表页的接口
          dataType: "json",
          data: {             //接口参数的设置
            "gameid": 4,
            "page": page,
            "size":6,
            "type": 0,
          },
          success:function(data){
            if(data.c && data.d){
              totleSize = data.t;
              console.log(totleSize);
              totlePage = Math.ceil(totleSize/6);  //计算总页数
              page = curPage;
              var data = data.d;
              var newsarray = [];
              for(var i=0;i<data.length;i++){
                newsarray = data[i];
                var newsdate = newsarray.date;
                var splitDate = newsdate.split("-");
                $(".main-lists-lastest").append($('<a href="show.html?newsid='+newsarray.id+'"><img src='+newsarray.thumb+'><p><span>'+newsarray.title+'</span>'+newsarray.description+'</p><p>'+splitDate[2]+'<span>'+splitDate[0]+'-'+splitDate[1]+'</span></p></a>'));
              } 
            }
          },
          complete:function(){
            getPageBar();
          }
        });
      }
    function getPageBar(){
        $(".listpage-latest .pagesin").empty();
        $(".listpage-latest .pre-page").empty();
        $(".listpage-latest .all-page").text("共"+totlePage+"页");
        $(".listpage-latest .cur-page").text("第"+curPage+"页");
        $(".listpage-latest .pre-page").text("上一页");
        $(".listpage-latest .next-page").text("下一页");
        for(var j=1;j<totlePage+1;j++){
          $(".listpage-latest .pagesin").append($('<a href="javascript:" rel='+j+'>'+j+'</a>'));
          if(j == curPage){
            $(".listpage-latest .pagesin a").eq((j-1)).addClass("active-pages");
          }
        }
      }

     简单的分页功能的实现,每个点击事件都是独立执行,比较简单易懂~

  • 相关阅读:
    linux下18种监测网络带宽方式
    python常用正则表达式
    python获取当前路径
    python获取本机的IP
    Linux 误卸载自带python后的解决办法
    jmeter分布式运行
    jmeter非GUI的运行命令
    linux下安装jmeter
    java基础笔记(8)
    java基础笔记(7)
  • 原文地址:https://www.cnblogs.com/layaling/p/9712441.html
Copyright © 2020-2023  润新知