当前位置: 首页 > news >正文

自己写的分页器,BOOTSTRAP+JQUERY(非完全版,后续完善)

第一步:
//创建几个php文件的全局变量先,后面会很多地方用到
var wholePhones="selectPhones.php";
var lowPowerPhones="lowPowerPhones.php";
var issuePhones="issuePhones.php";
var losePhones="losePhones.php";

    第二步:

// 根据不同类型sorting不同商品列表的共用的函数集合,两个参数分别表示从第几页开始查询,查询通过哪个接口
function sortPhones(page,pathUrl) {
var sumPage;
$.ajax({
type:'GET',
url:'data/'+pathUrl+'?page='+page,
success:function (result) {
var obj=JSON.parse(result);
var phones=obj.phones;
var count=obj.count;
sumPage=Math.ceil(count/20);
var html = "";
for(var i=0;i<phones.length;i++){
// 在这里定义一下模态框触发按钮的链接目标,要跟它对应的模态框ID一样,否则点开任何一条信息弹出的都是ID=1的商品信息
var hrefUrl='phoneModal'+i;
var phone = phones[i];
html += `
<div class="list-group-item divItem">
<ul class="list-inline row">
<li class="col col-md-1">${phone.id}</li>
<li class="col col-md-1">${isLock}</li>
<li class="col col-md-1">${phone.station_id}</li>
<li class="col col-md-1 dropdown">
<a href="" class="dropdown-toggle" data-toggle="dropdown">操作</a>
<ul class="dropdown-menu">
<li>开</li>
<li>关</li>
<li class="deleteCar">删除</li>
</ul>
</li>
<li class="col col-md-1">
<a href="#${hrefUrl}" data-toggle="modal">详情</a>
<div class="modal" id="${hrefUrl}" data-backdrop="static">
<div class="modia-dialog">
<div class="modal-content">
<div class="modal-header">
<span class="lf">商品详情</span>
<span class="rf closeModal" data-dismiss="modal">关闭</span>
</div>
<div class="modal-body">
<div class="map">
<img src="imgs/map.jpg" class="img-responsive">
</div>

<table class="table table-stripped">
<thead>
<tr>
<td><b>商品编号:&nbsp;&nbsp;&nbsp;&nbsp;${phone.id}</b></td>
</tr>
</thead>
<tbody>
<tr>
<td>创建时间:</td>
<td>${phone.created}</td>
</tr>
<tr>
<td>更新时间:</td>
<td>${phone.updated}</td>
</tr>
<tr>
<td>名称:</td>
<td>${phone.name}</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</li>
</ul>
</div>
`;
}
//没有想要sorting的商品时,显示的内容
var noSortHtml=`
<div class="list-group-item divItem">
<ul class="list-inline row">
<li class="col col-md-1">没有该类型的商品</li>
<li class="col col-md-1">NA</li>
<li class="col col-md-1">NA</li>
<li class="col col-md-1">NA</li>
</ul>
</div>
`;
if(phones.length<=0){$(".list-phone").html(noSortHtml)}
else{$(".list-phone").html(html)};
},
error:function (err) {
console.log(err)
}
})
}

第三步:

// 创建分页器的封装函数,重要!
    function createPage(page,pathUrl) {
var sumPage;
$.ajax({
type:'GET',
url:'data/'+pathUrl+'?page='+page,
success:function (result) {
var obj=JSON.parse(result);
var count=obj.count;
sumPage=Math.ceil(count/20);
// 将分页按钮渲染到HTML页面上
var pageHtml="<li class='previousPage'><a rel='1'>上一页</a></li>";
// 这个是默认激活的第一个页面,所以要单独写出来,不可以循环渲染
pageHtml+="<li class='active itemPage firstItem'><a rel='1'>1</a></li>";
if(sumPage>=2){
for(var j=0;j<sumPage-1;j++){
pageHtml+=`<li class="itemPage"><a rel='${j+2}'>${j+2}</a></li>`;
}
}
else{pageHtml+=''};
pageHtml+="<li class='nextPage'><a rel='2'>下一页</a></li>";
$('.pagination').html(pageHtml);

// 非点击按钮触发时候,其实只要保证上一页是禁用就行了,下一页没关系,它肯定不是禁用的
if($('.firstItem').hasClass('active')){$('.previousPage').addClass('disabled')}
else{$('.previousPage').removeClass('disabled')}
if(sumPage<=1){$('.nextPage').addClass('disabled')}
// 获取1-7按钮的集合(这里以后要优化,现在是数据库只有7条数据,后续如果数据多了就不能这样了)
var list=document.querySelectorAll('li.itemPage');
//点击1-7之间的按钮时触发事件
$(list).click(function () {
$(this).addClass('active').siblings().removeClass('active');
if($('.firstItem').hasClass('active')){$('.previousPage').addClass('disabled')}
else{$('.previousPage').removeClass('disabled')}
if($('.nextPage').prev().hasClass('active')){$('.nextPage').addClass('disabled')}
else{$('.nextPage').removeClass('disabled')}
// 获取分页器每页对应的页数,然后点击数字,查询不同页数的内容
var i=$(this).children('a').html();
console.log(i);
// 再判断条件来分页显示对应的列表信息
// 如果是商品总列表标签激活,就到总列表的php里面查询,以此类推
if($('#wholePhones').hasClass('current')){sortPhones(i,wholePhones)}
if($('#lowPowerPhones').hasClass('current')){sortPhones(i,lowPowerPhones)}
if($('#issuePhones').hasClass('current')){sortPhones(i,issuePhones)}
if($('#losePhones').hasClass('current')){sortPhoness(i,losePhones)}
});
// 在这里需要找到当前active的元素下标,然后点击时候要重新给index再赋值,因为慢一拍,所以点击时候index要+1
var index=parseInt($('.pagination li.active').children('a').html());
// 点击上一页按钮
$('.previousPage').click(function () {
index=parseInt($('.pagination li.active').children('a').html())+1;
if(index<=2){$('.firstItem').addClass('active').siblings().removeClass('active')}
else{$('.pagination li.active').prev().addClass('active').siblings().removeClass('active');}
//当上一页按钮后的一个元素是active时,让上一页按钮禁用
if($('.firstItem').hasClass('active')){$('.previousPage').addClass('disabled')}
else{$('.previousPage').removeClass('disabled')}
if($('.nextPage').prev().hasClass('active')){$('.nextPage').addClass('disabled')}
else{$('.nextPage').removeClass('disabled')}
// 获取分页器每页对应的页数,然后点击数字,查询不同页数的内容
var i=$('.pagination li.active').children('a').html();
console.log(i);
// 再判断条件来分页显示对应的列表信息
// 如果是商品总列表标签激活,就到总列表的php里面查询,以此类推
            if($('#wholePhones').hasClass('current')){sortPhones(i,wholePhones)}
if($('#lowPowerPhones').hasClass('current')){sortPhones(i,lowPowerPhones)}
if($('#issuePhones').hasClass('current')){sortPhones(i,issuePhones)}
if($('#losePhones').hasClass('current')){sortPhones(i,losePhones)}

});

//点击下一页按钮
$('.nextPage').click(function (e) {
e.preventDefault();
// 因为慢一拍,所以这里Index+1
index=parseInt($('.pagination li.active').children('a').html())+1;
if(index>sumPage){
$('.pagination li.active').addClass('active').siblings().removeClass('active');
}
else{$('.pagination li.active').next().addClass('active').siblings().removeClass('active');}
//当下一页按钮前的一个元素是active时,让下一页按钮禁用
if($('.firstItem').hasClass('active')){$('.previousPage').addClass('disabled')}
else{$('.previousPage').removeClass('disabled')}
if($('.nextPage').prev().hasClass('active')){$('.nextPage').addClass('disabled')}
else{$('.nextPage').removeClass('disabled')}
// 获取分页器每页对应的页数,然后点击数字,查询不同页数的内容
var i=$('.pagination li.active').children('a').html();
// 再判断条件来分页显示对应的列表信息
// 如果是车辆总列表标签激活,就到总列表的php里面查询,以此类推
             if($('#wholePhones').hasClass('current')){sortPhones(i,wholePhones)}
if($('#lowPowerPhones').hasClass('current')){sortPhones(i,lowPowerPhones)}
if($('#issuePhones').hasClass('current')){sortPhones(i,issuePhones)}
if($('#losePhones').hasClass('current')){sortPhones(i,losePhones)}

});
},
error:function (err) {
console.log(err)
}
})
}

第四步:
// 刚加载页面时显示商品总列表的分页器以及总商品列表详情,所以page和pathUrl两个参数分别是1和wholePhones,WholePhones是全部商品列表的后台接口
(function () {
if($('#wholePhones').hasClass('current')){createPage(1,wholePhones);}
sortPhones(1,wholePhones);
})();

转载于:https://www.cnblogs.com/xusongfu5050/p/7361901.html

相关文章:

  • spring data jpa的update操作
  • 详解java定时任务
  • day7回顾
  • Get和Post的参数传值
  • Linux查看占用GPU的进程
  • C++ 类型声明
  • 信息系统项目管理师----成本类计算
  • 【JavaScript】JavaScript赋值语句中的逻辑与和逻辑或||
  • NS3网络仿真(10): 解析以太网帧
  • Redis API 必杀解读:引入RedisTemplate
  • 第十五 jQuery
  • 设置防火墙使mysql可以远程连接的方法
  • 【转】mysql explain执行计划详解
  • iOS平台设置系统状态栏(通知栏、顶部状态栏)样式背景颜色或透明
  • AngularJs工具方法
  • JavaScript HTML DOM
  • laravel 用artisan创建自己的模板
  • mysql_config not found
  • Python_网络编程
  • Python爬虫--- 1.3 BS4库的解析器
  • QQ浏览器x5内核的兼容性问题
  • windows下mongoDB的环境配置
  • 批量截取pdf文件
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 深入浏览器事件循环的本质
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 学习ES6 变量的解构赋值
  • 一个项目push到多个远程Git仓库
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (1)虚拟机的安装与使用,linux系统安装
  • (145)光线追踪距离场柔和阴影
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (poj1.3.2)1791(构造法模拟)
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (转)iOS字体
  • .FileZilla的使用和主动模式被动模式介绍
  • .net 7 上传文件踩坑
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .net framework profiles /.net framework 配置
  • .NET Remoting学习笔记(三)信道
  • .net 按比例显示图片的缩略图
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .NET序列化 serializable,反序列化
  • @Autowired和@Resource的区别
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • @RequestMapping用法详解
  • [1]-基于图搜索的路径规划基础
  • [20170705]diff比较执行结果的内容.txt
  • [2023年]-hadoop面试真题(一)
  • [ASP.NET MVC]如何定制Numeric属性/字段验证消息