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

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

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

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

如图,点击上一页返回前面一页的数据,点击下一页,返回后面一页的数据,点击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");
}
}
}

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

Jquery、Ajax实现新闻列表页分页功能的更多相关文章

  1. 帝国cms 列表页分页样式修改美化【2】

    上一篇(帝国cms 列表页分页样式修改美化[1])中我们已经对分页说了一个大概,下面我们就自己动手弄一个分页把: 第一步:进入帝国cms后台,点击系统设置->系统参数设置->信息设置:里面 ...

  2. 帝国cms 7.5版列表页分页样式修改笔记

    最近在用帝国改版我的个人博客站点,这个也是我第一次尝试用帝国来做博客,之前用过wordpress,每用一个新的程序,都会有些新的收获,也会学到一些新的东西. 在改用帝国之前,我也在网上大概了解了一下, ...

  3. jquery ajax php+mysql 无刷新分页 详细实例

    最近在接触jquery和ajax,当前项目也会用到分页,为了用户体验更好一些,就准备用无刷新分页,这个demo很适合新手学习查看,写的比较清晰,话不多说,直接上代码吧. 首先是html页面,index ...

  4. asp.net中利用Jquery+Ajax+Json实现无刷新分页(二)

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="PageTest.aspx.cs ...

  5. dede列表页分页地址优化(不同url相同内容问题解决)<转自http://www.966266.com>

    <注明,完全转自http://www.966266.com/seoblog/?p=75> 存在问题 DEDE默认分类分页地址存在不同URL相同内容问题,导致内容重复,对SEO非常不利.情况 ...

  6. 帝国cms 列表页分页样式修改美化【1】

    [1]自己修改帝国cms默认的分页样式(css),这样做的好处是你不用去改动帝国的核心文件,方便以后升级. [2]自己动手去修改帝国的分页(php+css),帝国的分页在e>class>下 ...

  7. Angular2快速入门-3.多个组件(分离新闻列表页和详细页)

    上篇(Angular2快速入门-2.创建一个新闻列表)已经完成新闻列表的展示,并且点击新闻列表的时候,下面可以展示出新闻的详细信息,这节我们把新闻详细和新闻列表页面分离出来 新闻详细单独一个compo ...

  8. 静态页分页功能js代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. jQuery循环滚动新闻列表

    最近由于项目原因,学习了下jquery,实现了一个小小的功能,就是点击公告的上一条下一条来查看滚动条.具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DT ...

随机推荐

  1. 使用Git将码云上的代码Clone至本地

    1. 安装Git https://git-scm.com/book/zh/v2/%E8%B5%B7%E6%AD%A5-%E5%AE%89%E8%A3%85-Git Git的网站上有详细的分各种系统的安 ...

  2. 用c++实现获取程序运行的时间

    看代码: #include<iostream> #include<ctime> using namespace std; int main() { int i; time_t ...

  3. 3D 点云特征

    博客参考: https://blog.csdn.net/shaozhenghan/article/details/81346585 和 https://www.cnblogs.com/li-yao77 ...

  4. 分析一则halcon抓边拟合直线的小案例

    例图: 完整算法: read_image (Image, 'C:/Users/Administrator/Desktop/1.png') threshold (Image, Regions, , ) ...

  5. hrabs 首页 新闻,快捷菜单,响应式列表,seliverlight

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="firstPage.aspx ...

  6. genymotion的安装

    1.安装virtualBox google的模拟器是运行在qemu上面的. genymotion这个模拟器运行在virtualBox上面.

  7. 475. Heaters

    static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }(); class Solution { publ ...

  8. win7更改路由器wifi 密码

    1.有线.无线都能进入192.168.1.1路由设置界面 (也可能是192.168.0.1看路由底面IP) ps: 无线(笔记本与路由没使用网线相连)情况下必须开启wifi连接上该路由才能进入. 无法 ...

  9. ZOJ2208 To and Fro 2017-04-16 19:30 45人阅读 评论(0) 收藏

    To and Fro Time Limit: 2 Seconds      Memory Limit: 65536 KB Mo and Larry have devised a way of encr ...

  10. FlexBox弹性盒布局

    网页布局(layout)是 CSS 的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂 ...