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");
}
}
}
简单的分页功能的实现,每个点击事件都是独立执行,比较简单易懂~
Jquery、Ajax实现新闻列表页分页功能的更多相关文章
- 帝国cms 列表页分页样式修改美化【2】
上一篇(帝国cms 列表页分页样式修改美化[1])中我们已经对分页说了一个大概,下面我们就自己动手弄一个分页把: 第一步:进入帝国cms后台,点击系统设置->系统参数设置->信息设置:里面 ...
- 帝国cms 7.5版列表页分页样式修改笔记
最近在用帝国改版我的个人博客站点,这个也是我第一次尝试用帝国来做博客,之前用过wordpress,每用一个新的程序,都会有些新的收获,也会学到一些新的东西. 在改用帝国之前,我也在网上大概了解了一下, ...
- jquery ajax php+mysql 无刷新分页 详细实例
最近在接触jquery和ajax,当前项目也会用到分页,为了用户体验更好一些,就准备用无刷新分页,这个demo很适合新手学习查看,写的比较清晰,话不多说,直接上代码吧. 首先是html页面,index ...
- asp.net中利用Jquery+Ajax+Json实现无刷新分页(二)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PageTest.aspx.cs ...
- dede列表页分页地址优化(不同url相同内容问题解决)<转自http://www.966266.com>
<注明,完全转自http://www.966266.com/seoblog/?p=75> 存在问题 DEDE默认分类分页地址存在不同URL相同内容问题,导致内容重复,对SEO非常不利.情况 ...
- 帝国cms 列表页分页样式修改美化【1】
[1]自己修改帝国cms默认的分页样式(css),这样做的好处是你不用去改动帝国的核心文件,方便以后升级. [2]自己动手去修改帝国的分页(php+css),帝国的分页在e>class>下 ...
- Angular2快速入门-3.多个组件(分离新闻列表页和详细页)
上篇(Angular2快速入门-2.创建一个新闻列表)已经完成新闻列表的展示,并且点击新闻列表的时候,下面可以展示出新闻的详细信息,这节我们把新闻详细和新闻列表页面分离出来 新闻详细单独一个compo ...
- 静态页分页功能js代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- jQuery循环滚动新闻列表
最近由于项目原因,学习了下jquery,实现了一个小小的功能,就是点击公告的上一条下一条来查看滚动条.具体代码如下: <!DOCTYPE html PUBLIC "-//W3C//DT ...
随机推荐
- Python运维开发基础03-语法基础
上节作业回顾(讲解+温习60分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen #只用变量和字符串+循环实现" ...
- Radial Blur
[Radial Blur] 核心代码如下: v2f vert (appdata_img v) { v2f o; o.pos = mul(UNITY_MATRIX_MVP, v.vertex); o.u ...
- Hadoop Pipes
[Hadoop Pipes] 1.MapContext的getInputSplit()可以用于获取当前mapper所对象的文件路经,也就是Pipes中,没有InputSplit接口/对象. 2.在Pi ...
- gpg的使用
[gpg的使用] 在Linux系统中,gpg程序可以实现非对称加密. 下面简单介绍gpg命令的用法:一.创建密钥:$ gpg --gen-key Please select what kind of ...
- Visual Studio 2013 osg
1>------ Rebuild All started: Project: ZERO_CHECK, Configuration: Debug x64 ------1> Checking ...
- Flannel网络部署
一.Flannel网络部署 为Flannel生成证书 [root@linux-node1 ssl]# vim flanneld-csr.json { "CN": "fla ...
- ROS Navigation中的map_server地图包功能和使用
博客参考 http://wiki.ros.org/map_server 和 https://www.ncnynl.com/archives/201708/1897.html 1. 安装map_serv ...
- 关于GLSL中语法和调用规则的一些记录
glsl是什么就不多说了.这里只介绍一下glsl中一些限定符. glsl中包含两类具有定义性质的符号,一类是和c++中定义变量的一样的符号,用来说明存放数据的类型,如float,int,bool.还有 ...
- 解决root@localhost's password:localhost:permission denied,please try again
背景:在装完Hadoop及jdk之后,在执行start-all.sh的时候出现 root@localhost's password:localhost:permission denied,please ...
- Android Studio真机测试失败-----''No target device found"
手机成功连接电脑,并且手机已经设置了开发者模式,但是启动真机还是失败,最后发现居然自己没有配置android sdk的环境变量,配置之后 如果还是不能启动,点击android studio上的tool ...