开始一个组件,毫无目的的写代码是一个不好的习惯,要经历 分析 => 抽象 => 实现 => 应用 四个阶段。

组件DEMO地址:https://github.com/CaptainLiao/zujian/tree/master/pagination
分析需求
当前页码显示前后三页,以及在两端显示上一页、下一页
未显示的地方用 ‘...'代替
举个栗子:
假设总共有30页
当前为第一页:1 2 3 4 ... 30 下一页
当前为第二页:上一页 1 2 3 4 5 ... 30 下一页
当前为第三页:上一页 1 2 3 4 5 6 ... 30 下一页
.
当前为第6页:上一页 1 ... 3 4 5 6 7 8 9 ... 30 下一页
.
当前为第29页:上一页 1 ... 26 27 28 29 30 下一页
当前为第30页:上一页 1 ... 27 28 29 30
抽象
分析上面的例子,发现决定输出的因素有两个:当前页码和总页数。
于是,我们设定一个函数用来表示当前页码的显示内容:
/**
* @param {Number} page 当前页
* @param {Number} totalPage 总页数
*/
function pagination(page, totalPage) {
var str = '';
// todo...
return str;
}
// 运行函数,打印出值
var ret = pagination(4, 30)
console.log(ret)
>上一页 1 2 3 4 5 6 7 ... 30 下一页
实现
输入和输出都有了,接着正式开始撸:
function pagination(page, totalPage) {
var str = page;
// 这里实现当前页面显示前后三项功能
for(var i=1; i< totalPage; i++) {
if(page-i>1) {
str = page-i +' '+ str;
}
if(page + i < totalPage) {
str = str + ' ' + (page+i)
}
}
// 以page为中心,向左右扩展
// 向左,先判断当前page向左的第四个数是否大于 1
if(page-4 > 1) {
str = '... ' + page;
}
// 继续向左判断
if(page >1) {
str = "上一页" + '... ' +1 +' ' +str;
}
// 向右,判断当前page向右的第四个数字是否小于 totalPage
if(page + 4 < totalPage) {
str = '... '+ str;
}
if(page < totalPage) {
str = str +' ' + totalPage +' '+ '下一页';
}
return str;
}
现在,我们可以执行下面的函数,取得我们想要的结果:
var total = 30;
for(var i = 1; i< total; i++) {
var ret = showPage(i, total);
console.log(ret)
}
至此,我们已经实现了分页的逻辑。
应用
接下来的应用就非常简单了,不外乎是给str 加一些标签和class,于是我们就得到了一个分页组件:
HTML:
<ul id="pagination-list" class="clearfix2"> </ul>
javascript:
function pagination(page, totalPage) {
var str = '<li class="page-active">'+page+'</li>';
for(var i=1; i<=3; i++) {
if(page - i > 1) {
str = '<li class="page-item">'+(page-i)+'</li>' +' '+ str;
}
if(page + i < totalPage) {
str = str +" "+'<li class="page-item">'+(page+ i)+'</li>'
}
}
if(page-4 >1) {
str = '<li class="page-item">... </li>' +str;
}
if (page >1) {
str= '<li class="page-up">上一页</li>'+ ' '+'<li class="page-item">1</li>' +' '+ str;
}
if(page+4< totalPage) {
str = str+ '<li class="page-item"> ...</li>';
}
if(page < totalPage) {
str = str + " " +'<li class="page-item">'+totalPage+'</li>' +" " +'<li class="page-down">下一页</li>'
}
return str;
}
var totalPage = 30;
var str = pagination(1, totalPage);
var wrap = $("#pagination-list");
// 这里引用了 jQuery
wrap.html(str)
.on('click', '.page-item', function () {
var cur = parseInt($(this).text());
wrap.html(pagination(cur, totalPage));
});
看看效果吧:
目前来说,进展顺利,但是!还有很多需要优化的地方:样式固定,不能自由更改;初始化和交互混杂在一起,没有对代码进行封装...
又经过一番折腾,这个分页组件终于完成,下载demo:
https://github.com/CaptainLiao/zujian/tree/master/pagination
现在,我们可以这样调用它:
<script>
// #pagination-list 是组件的父容器,50 是总页数。
$(function () {
$("#pagination-list").pagination(50);
})
</script>
是不是很酸爽呢?
如果继续扩展,我们还可以给组件更多的样式选择......
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# pagination
# 分页组件
# jQuery EasyUI API 中文文档 - Pagination分页
# jQuery Pagination Ajax分页插件(分页切换时无刷新与延迟)中文翻译版
# jquery pagination插件实现无刷新分页代码
# jquery.pagination.js 无刷新分页实现步骤分享
# jquery分页插件jquery.pagination.js使用方法解析
# Jquery 分页插件之Jquery Pagination
# PHP框架Laravel插件Pagination实现自定义分页
# jquery.pagination +JSON 动态无刷新分页实现代码
# jquery插件pagination实现无刷新ajax分页
# asp.net jquery无刷新分页插件(jquery.pagination.js)
# 下一页
# 上一页
# 分页
# 我们可以
# 是一个
# 还可以
# 不是很
# 就得
# 三项
# 第一页
# 还有很多
# 大家多多
# 总共有
# 举个
# 实现了
# 四个阶段
# 一个函数
# 有两个
# 当前页
# gt
相关文章:
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
建站主机与虚拟主机有何区别?如何选择最优方案?
如何在Ubuntu系统下快速搭建WordPress个人网站?
实惠建站价格推荐:2025年高性价比自助建站套餐解析
如何在IIS7上新建站点并设置安全权限?
如何在建站主机中优化服务器配置?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
制作旅游网站html,怎样注册旅游网站?
文字头像制作网站推荐软件,醒图能自动配文字吗?
如何在阿里云香港服务器快速搭建网站?
建站为何优先选择香港服务器?
香港服务器选型指南:免备案配置与高效建站方案解析
宝塔新建站点报错如何解决?
网页设计与网站制作内容,怎样注册网站?
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
建站之星好吗?新手能否轻松上手建站?
设计网站制作公司有哪些,制作网页教程?
长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?
如何撰写建站申请书?关键要点有哪些?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
家庭建站与云服务器建站,如何选择更优?
重庆市网站制作公司,重庆招聘网站哪个好?
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
兔展官网 在线制作,怎样制作微信请帖?
如何在宝塔面板中创建新站点?
如何基于PHP生成高效IDC网络公司建站源码?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
如何安全更换建站之星模板并保留数据?
网站好制作吗知乎,网站开发好学吗?有什么技巧?
历史网站制作软件,华为如何找回被删除的网站?
b2c电商网站制作流程,b2c水平综合的电商平台?
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
内网网站制作软件,内网的网站如何发布到外网?
公司网站的制作公司,企业网站制作基本流程有哪些?
如何在宝塔面板中修改默认建站目录?
建站之家VIP精选网站模板与SEO优化教程整合指南
如何在万网主机上快速搭建网站?
,石家庄四十八中学官网?
韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何在建站之星网店版论坛获取技术支持?
如何在阿里云服务器自主搭建网站?
外贸公司网站制作哪家好,maersk船公司官网?
如何挑选高效建站主机与优质域名?
网站制作价目表怎么做,珍爱网婚介费用多少?
为什么Go需要go mod文件_Go go mod文件作用说明
青浦网站制作公司有哪些,苹果官网发货地是哪里?
网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?
南京网站制作费用,南京远驱官方网站?
建站之星如何开启自定义404页面避免用户流失?
*请认真填写需求信息,我们会在24小时内与您取得联系。