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");
      }
    }
  }

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

posted @ 2018-09-27 14:55  可可西里的骄傲  阅读(4044)  评论(0编辑  收藏  举报