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 ...
随机推荐
- 【独家】阿里天池IJCAI17大赛第四名方案全解析(附代码)
[独家]阿里天池IJCAI17大赛第四名方案全解析(附代码) https://mp.weixin.qq.com/s?__biz=MzAxMzA2MDYxMw==&mid=2651560625& ...
- Hello Vizhub
VizHub.com 一.介绍 Vizhub是一个使用D3.js和svg进行数据可视化的教学练三位一体的平台. 并且可以把在线编辑的代码保存到网站中. 右上角可以使用github账号登录. 二.Get ...
- mysql5.7 初始化启动
root@0f6852dfee81:/# mysql --versionmysql Ver 14.14 Distrib 5.7.18-16, for debian-linux-gnu (x86_64 ...
- java线程池相关接口Executor和ExecutorService
在线程池的api中,Executor接口是最上层的接口,内部只有一个方法.如下: public interface Executor { void execute(Runnable command); ...
- 25- 解决'python -m pip install --upgrade pip' 报错问题
转载于:https://blog.csdn.net/cxs123678/article/details/80659273 再安装包的时候提示 You are using pip version 9.0 ...
- Golang学习系列:(一)介绍和安装
Golang学习系列:(一)介绍和安装 Java程序员带你来到Go的世界,让我们开始探索吧! Go是一种新的语言,一种并发的,带有垃圾回收的.快速编译的语言,它具有一下特点: 他可以在一台计算机上用几 ...
- centos环境下登录mysql报 ERROR 1045 (28000)怎么解决
centos环境下登录mysql报 ERROR 1045 (28000)怎么解决 新入手一台虚拟机,Centos7系列的操作系统,安装mysql后,执行连接出现了Mysql ERROR 1045 (2 ...
- Kubernetes 中的pv和pvc
原文地址:http://www.cnblogs.com/leidaxia/p/6485646.html 持久卷 PersistentVolumes 本文描述了 Kubernetes 中的 Persis ...
- 使用 log4j 打印日志
开发阶段:发现程序的问题,排错 产品阶段:记录程序运行的状况 Maven中配置依赖 通过配置文件输出日志的格式,输送的位置等 一.入门实例 1.新建一个JAva工程,导入包log4j-1.2.17.j ...
- Oracle ERP Profile
1.配置系统 . 进入路径:SYSADMIN 登录,系统管理员--Profile--系统: 配置分类 配置文件 文件选项 内容 配置系统 ICX% ICX:日期显示样式 选择修改日期输 入格式(199 ...