jQuery实现的简单分页功能的详细解析
分页功能在项目开发中不可或缺,老司机操作起来就和呼吸一样简单,新手恐怕就会吃力一些。
今天我回顾了一下具体的操作步骤,决定详细的分析一下每一步的实现目的及原理。
我们会创建一个简单的json文件来模拟要从数据库请求的数据。
分页应注意下面几点问题:
1) 每页的条目数量,以下用show_per_page变量来表示
2) 页数的统计,总页数/show_per_page就是页数了
3) 利用a标签的href属性,指向对应的函数,就可以实现页面跳转
4) 定义a标签的一个longdisc属性,来判断哪个a标签被选中,给他添加active_page类名
HTML代码:
//用来存放目前的选中页
<input type='hidden' id='current_page' />
//存放显示的页面条数
<input type='hidden' id='show_per_page' />
//显示内容的盒子
<div id='content'>
</div>
//存放供选择页面的点击按钮
<div id='page_navigation'></div><br>
<br>
jQuery代码:
$(function(){
//一个ajax的get请求,获取要得到的数据
$.get("get.json",function(data){
var data=data;
//命名分页的条目数量
var show_per_page = 5;
//获取到的数据条目数就是总的条目数量
var number_of_items = data.list.length;
//遍历这些条目,创建p标签并添加到div里面
var htmlStr="";
$.each(data.list, function(index,obj) {
htmlStr+="<p>"+obj+"</p>";
});
$("#content").append(htmlStr);
//显示的页数
var number_of_pages = Math.ceil(number_of_items/show_per_page);
//选中页默认为0
$('#current_page').val(0);
//显示页面的条数
$('#show_per_page').val(show_per_page);
//拼接向前翻页字符串
var navigation_html = '<a class="previous_link" href="javascript:previous();">Prev</a>';
//拼接将要显示的总页数的字符串,longdesc类似于alt标签属性,用作选中元素添加active_page类名
var current_link = 0;
while(number_of_pages > current_link){
navigation_html += '<a class="page_link" href="javascript:go_to_page(' + current_link +')" longdesc="' + current_link +'">'+ (current_link + 1) +'</a>';
current_link++;
}
//拼接向后翻页字符串
navigation_html += '<a class="next_link" href="javascript:next();">Next</a>';
//将字符串添加到列表里
$('#page_navigation').html(navigation_html);
//默认第一个页数按钮的class名字
$('#page_navigation .page_link:first').addClass('active_page');
//将获取的条数全部隐藏
$('#content').children().css('display', 'none');
//第一页显示的条数显示
$('#content').children().slice(0, show_per_page).css('display', 'block');
})
});
//向前翻页,回顾拼接字符串的点击跳转属性
function previous(){
new_page = parseInt($('#current_page').val()) - 1;
//判断如果它前面有兄弟元素,即跳到前一页
if($('.active_page').prev('.page_link').length==true){
go_to_page(new_page);
}
}
//向后翻页
function next(){
new_page = parseInt($('#current_page').val()) + 1;
//判断如果它后面有兄弟元素,即跳到后一页
if($('.active_page').next('.page_link').length==true){
go_to_page(new_page);
}
}
//这才是最核心的函数,它带动每个翻页功能
function go_to_page(page_num){
var show_per_page = parseInt($('#show_per_page').val());
start_from = page_num * show_per_page;
end_on = start_from + show_per_page;
//除了当前显示页面的数据显示,其余都隐藏
$('#content').children().css('display', 'none').slice(start_from, end_on).css('display', 'block');
//当前点击的页面a按钮添加avtive_page类名,其余都移除
$('.page_link[longdesc=' + page_num +']').addClass('active_page').siblings('.active_page').removeClass('active_page');
//最重要的一步
$('#current_page').val(page_num);
}
这样代码就可以运行了
jQuery实现的简单分页功能的详细解析的更多相关文章
- DataGridView使用BindingNavigator实现简单分页功能
接上一篇<DataGridView使用自定义控件实现简单分页功能>,本篇使用BindingNavigator来实现简单分页功能.其实也只是借用了一个BindingNavigator空壳, ...
- guitar pro系列教程(一):Guitar Pro主界面之记谱功能的详细解析【上】
相信弹吉他的朋友们对guitar pro这款软件并不陌生,也有很多朋友用它来看谱制谱.而GP有很多实用功能,能够使我们看谱更清晰,制谱更便捷,所以让我们一起来看看吧 Guitar Pro对初学作曲,特 ...
- Django实现简单分页功能
使用django的第三方模块django-pure-pagination 安装模块: pip install django-pure-pagination 将'pure_pagination'添加到s ...
- jQuery实现的简单小功能(实用)
1.返回顶部使用JQuery的animate和scrollTop方法可以创建简单地返回顶部的动画: // Back to top $('#top').click(function (e) { e.pr ...
- DataGridView使用自定义控件实现简单分页功能
本例子使用自定义控件方法实现,数据库使用的是SQL Server,实现过程如下: 1.新建一个自定义控件,命名为:PageControl. 2.PageControl代码如下: public part ...
- jQuery与直接写JS的区别详细解析
jQuery代码具体的写法和原生的Javascript写法在执行常见操作时的区别如下所示.需要的朋友可以过来参考下 要使用jQuery,首先要在HTML代码最前面加上对jQuery库的引用,比 ...
- guitar pro系列教程(二):Guitar Pro主界面之记谱功能的详细解析【下】
本章节我们接着上一章节继续讲解关于guitar pro主界面的记谱功能里的符号功能.有兴趣的朋友可以进来一起学习哦. 首先我们看下图,这是点击按钮便会弹出的一个窗口,进入这个窗口,我们会看到" ...
- 简单封装分页功能pageView.js
分页是一个很简单,通用的功能.作为一个有经验的前端开发人员,有义务把代码中类似这样公共的基础性的东西抽象出来,一来是改善代码的整体质量,更重要的是为了将来做类似的功能或者类似的项目,能减少不必要的重复 ...
- C#设计模式总结 C#设计模式(22)——访问者模式(Vistor Pattern) C#设计模式总结 .NET Core launch.json 简介 利用Bootstrap Paginator插件和knockout.js完成分页功能 图片在线裁剪和图片上传总结 循序渐进学.Net Core Web Api开发系列【2】:利用Swagger调试WebApi
C#设计模式总结 一. 设计原则 使用设计模式的根本原因是适应变化,提高代码复用率,使软件更具有可维护性和可扩展性.并且,在进行设计的时候,也需要遵循以下几个原则:单一职责原则.开放封闭原则.里氏代替 ...
随机推荐
- Chorme 快捷键
掌握谷歌浏览器的快捷键,能提升一定的使用效率. Windows 和 Linux 标签页和窗口快捷键 操作 快捷键 打开新窗口 Ctrl + n 在隐身模式下打开新窗口 Ctrl + Shift + n ...
- .net MVC 中“MvcPager” 插件的简单使用。
.net MVC 中提供了一个分页组件"MvcPager",用起来还算方便,实用性较强. 简单写一下使用方法,如有不足的地方,请各位大大给小弟指正出来. 一.准备工作 使用这个组件 ...
- nodejs问题整理--fs.exists无法正确判断文件的问题
fs.exists方法 方法说明: 测试某个路径下的文件是否存在.回调函数包含一个参数exists,true则文件存在,否则是false. 语法: fs.exists(path, callback) ...
- linux下安装tomcat,并设置自动启动
在linux系统下,设置某个服务自启动的话,需要在/etc/rcX.d下挂载,还要在/etc/init.d/下写启动脚本的 在/etc/init.d/下新建一个文件tomcat(需要在root权限下操 ...
- Openlayer 3 最简单的弹出框
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Java 语言的 XPath API
如果要告诉别人买一加仑牛奶,您会怎么说?"请去买一加仑牛奶回来" 还是 "从前门出去,向左转,走三个街区向右转,再走半个街区向右转进入商店.走向四号通道,沿通道走五米向左 ...
- Python 函数之路
---恢复内容开始--- python函数的定义 def add(): a = 1 b = 2 c == a + b print(c) 函数就是把一段实现某一个功能的代放进一个封装的方法名里,这个方法 ...
- maven创建spring项目之后,启动报错java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoade
错误: org.apache.catalina.core.StandardContext listenerStart严重: Error configuring application listener ...
- Nginx+Apache实现反向代理
一 反向代理 1.1 反向代理是什么 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器, 并将从服务器上得到的结果返回给 ...
- Oracle第一天
Oracle第一天 v3.1 整体安排(3天) 第一天:Oracle的安装配置(服务端和客户端),SQL增强(单表查询). 第二天:SQL增强(多表查询.子查询.伪列-分页),数据库对象(表.约束.序 ...