整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

Jquery如何模拟分页-小白进阶

Jquery如何模拟分页-小白进阶

击右上方红色按钮关注“web秀”,让你真正秀起来

前言

作为前端开发,很多时候,后台给的数据不是我们想要的,遇到好说话的,给你改,遇到那种不好说话的,只能自己动手了。今天就来给大家讲讲前端如何来模拟分页,下面注释很详细,这里就不做过多的介绍了。

html容器

<div id="docList"></div>
<div class="more" id="docLoadMore">加载更多</div>

js逻辑处理

var data={
 // 分页数据
 docPages: {
 pageNo: 1, // 当前页码
 pageSize: 3 // 一页多少条数据
 },
 // 模拟数据
 docList: [{
 name: '这是我的第1篇文章'
 },{
 name: '这是我的第2篇文章'
 },{
 name: '这是我的第3篇文章'
 },{
 name: '这是我的第4篇文章'
 },{
 name: '这是我的第5篇文章'
 },{
 name: '这是我的第6篇文章'
 },{
 name: '这是我的第7篇文章'
 },{
 name: '这是我的第8篇文章'
 }]
}
$('#docLoadMore').on('click',function(){
 function getHtml(name) {
 // html模板
 var tpl='<div class="load-li dis-flex clearfix">'+
 '<span class="align-left">'+
 '<img src="../images/productDetails/yh_product_wendang_icon@2x.png" / class="word-icon">'+
 '</span>'+
 '<span class="color-66 flex1 li-content fs-01">'+name+'</span>'+
 '<span class="align-right">'+
 '<img src="../images/productDetails/yh_product_xiazai_icon@2x.png" / class="load-icon">'+
 '</span>'+
 '</div>';
 return tpl;
 }


 var pageNo=data.docPages.pageNo;
 var pageSize=data.docPages.pageSize;
 // 计算最多分多少页
 // 总条数 / 一页多少条=可以分多少页 如果是小数 向上取整(Math.ceil)
 let maxPage=Math.ceil(data.docList.length / pageSize);
 // 如果页面大于总页数return
 if (pageNo > maxPage) {
 console.log('没有更多了');
 return;
 }
 // 计算第n页时取第几条到第几条数据
 var startIndex=(pageNo-1) * pageSize; // 下标从0开始,所以-1
 // 1:(1-1)*2=>0
 // 2:(2-1)*2=>2
 // 3:(3-1)*2=>4
 // 4:(4-1)*2=>6
 var endIndex=pageNo * pageSize - 1;
 // 1: 1*2=>2
 // 2: 2*2=>4
 // 3: 3*2=>6
 data.docPages.pageNo ++;
 // 根据下标找到对应的页码的数据
 var newPage=vm.data.docList.slice(startIndex, endIndex+1);
 let html='';
 newPage.map(function(item){
 html +=getHtml(item.name);
 });
 // 向元素后面插入准备好的html内容
 $('#docList').append(html);
})

中间有部分是模板,看的不是很清楚,看下面截图。

上面代码没有初始化第一页数据,点击一下才会出来第一页的数据,所以可以在页面加载完毕,自动触发一下点击事件

$('#docLoadMore').trigger('click');

是不是很简单了,只要自己动手操作,发现事实都很简单。

公告

喜欢小编的点击关注,了解更多知识!

源码地址请点击下方“了解更多”

要涉及到数据查询,通常我们都会进行分页查询。

假设你的表中有上百万条记录,不分页的话,我们不可能一次性将所有数据全部都载入到前端吧,那前后端都早就崩溃了。

结合 Spring

Spring 和 Vue 都提供了开箱即用的分页功能。

Spring 主要用来处理后端的分页查询,VUE 主要在前端展示页面和进行下一个页面的查询。

有关后端 Spring 如何进行分页查询的方法,请参考:Spring Data @Repository 的分页查询 中的文章。

如果你配置得当,Spring 会将整个查询的页面信息发送给前端。

比如我们说的这一部分,在这部分中,我们会知道总共查询的记录有多少,每一页的大小,一共有多少页,当前是第几页等分页最重要的信息。

VUE

VUE 的前端可以用 Pagination 这个组件 Pagination | Components | BootstrapVue

我们直接在前端调用模板,将参数设置进来就完成了。

代码可以精简到只有下面几句话:

            <b-pagination
                v-model="pagedData.number"
                :total-rows="pagedData.totalElements"
                :per-page="pagedData.size"
                @click="pageSearch(pagedData.number -1)"
                class="pagination pagination-rounded justify-content-end mb-2"
            ></b-pagination>

不用重复做无用的事情了。

第一个参数是当前的页面是第几页。

第二个参数为一共有多少条记录。

第三个参数为当前分页的页面大小。

第四个参数为,如果页码被单击了,我们会触发一个什么样的函数,通常这个函数就是通过 AJAX 的调用到后台再获取一次数据。

是不是简单到令人发指。

如果没有这个模板的话,我们需要手写分页,还要算页面编码,真心没必要。

如果想使用不同的 CSS 的话,在分页模板中加入自己的 CSS 就可以了。

我们的分页效果为

页面看起来还非常干净喔。

站分页功能是必不可少的,一般用在列表页面中,javascript实现分页效果,效果如下:

实现代码

html结构:

CSS样式:

javascript: