在一些搜索列表的页面中,我们会遇到一些需要处理页签的需求,一般这样的页面,要么是在JSP中处理,每次都跳页。这样做是个很方便的方法。但是如果页面上有很多和列表无关,每次都需要重新渲染是不是显得慢了一些。那么,还有另一种方法——ajax请求列表,这种方法同样需要和后端预定接口格式,但是这里只描述分页这块的事情,为了专注于分页的逻辑,页签的式样我就用bootstrap来处理。

 <ul class="pagination">
<li data-pagenum="0" class="active"><a href="javascript:void(0);">1</a>
</li>
<li data-pagenum="1"><a href="javascript:void(0);">2</a>
</li>
<li data-pagenum="2"><a href="javascript:void(0);">3</a>
</li>
<li data-pagenum="3"><a href="javascript:void(0);">4</a>
</li>
<li data-pagenum="4"><a href="javascript:void(0);">5</a>
</li>
<li data-pagenum="5"><a href="javascript:void(0);">6</a>
</li>
<li data-pagenum="6"><a href="javascript:void(0);">7</a>
</li>
<li data-pagenum="7"><a href="javascript:void(0);">8</a>
</li>
<li data-pagenum="8"><a href="javascript:void(0);">9</a>
</li>
<li data-pagenum="1"><a href="javascript:void(0);">下一页</a>
</li>
<li data-pagenum="5559"><a href="javascript:void(0);">尾页</a>
</li>
</ul>

接下来我们专注逻辑部分

既然要处理页签,就不得不提到接口返回了那些数据,一般来说除了返回请求的list外还应给有总共有多少条信息count,

总页数totalPage, 当前页curPage。当然也有其他的信息,不过有上面3个信息就已经可以处理页签了。

我们封装一个专门处理页签的函数function setPageFoot(count, totalPage, curPage){}

 /*分页 设置*/
function setPageFoot(count, totalPage, curPage){ var pageStr = '';
var i_page_start = 0;
var i_page_end = 9;
if(totalPage < 9){
i_page_end = totalPage;
}else{ if((curPage + 8) <= (totalPage-1)){
i_page_end = curPage + 8;
}else if((curPage + 7) <= (totalPage-1)){
i_page_end = curPage + 7;
}else if((curPage + 6) <= (totalPage-1)){
i_page_end = curPage + 6;
}else if((curPage + 5) <= (totalPage-1)){
i_page_end = curPage + 5;
}else if((curPage + 4) <= (totalPage-1)){
i_page_end = curPage + 4;
}else if((curPage + 3) <= (totalPage-1)){
i_page_end = curPage + 3;
}else if((curPage + 2) <= (totalPage-1)){
i_page_end = curPage + 2;
}else if((curPage + 1) <= (totalPage-1)){
i_page_end = curPage + 1;
}else{
i_page_end = curPage;
}
i_page_start = i_page_end-8;
} if(curPage >= 4 && curPage + 4 < totalPage - 1){
i_page_start -= 4;
i_page_end -= 3;
} var pageItems = [];
if(curPage > 0){
pageItems.push({
'txt': '首页',
'data-pageNum': 0
});
if(i_page_start > 0){
pageItems.push({
'txt': '上一页',
'data-pageNum': i_page_start-1
});
}
}
for(; i_page_start <= i_page_end; i_page_start ++){
var pageItem = {
'txt': i_page_start + 1 + '',
'data-pageNum': i_page_start
}
pageItems.push(pageItem);
} if(curPage < totalPage - 1){
if(curPage < totalPage-1){
pageItems.push({
'txt': '下一页',
'data-pageNum': curPage + 1
});
}
pageItems.push({
'txt': '尾页',
'data-pageNum': totalPage - 1
});
} $.each(pageItems, function (i,v){
var pageStrItem = '<li data-pageNum="'+v['data-pageNum']+'"><a href="javascript:void(0);">'+v.txt+'</a></li>';
if(v['data-pageNum'] === curPage){
pageStrItem = '<li data-pageNum="'+v['data-pageNum']+'" class="active"><a href="javascript:void(0);">'+v.txt+'</a></li>';
}
pageStr += pageStrItem;
}); $('.mobHot-contain .panel-footer .pagination').html('').append(pageStr);
}

这样我们就完成了这次页签的刷新。

ajax实现分页页签的更多相关文章

  1. ASP.NET MVC搭建项目后台UI框架—4、tab多页签支持

    目录 ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NE ...

  2. JavaScript选项卡/页签/Tab的实现

    选项卡,也称页签,英文用Tab(Module-Tabs)表示.Tab将不同的内容重叠放在一个布局块内,重叠的内容区里每次只有其中一个是可见的. Tab可以在相同的空间里展示更多的信息,它把相似的主题分 ...

  3. Ajax做分页

    Ajax做分页 用这种ajax做分页的方法比较简单,把代码直接复制就可以,然后根据实际更改一下里面的参数. .设置分页显示显示的样式,显示效果如下. 复制代码 <style type=" ...

  4. 利用Linq + Jquery + Ajax 异步分页的实现

    在Web显示的时候我们经常会遇到分页显示,而网上的分页方法甚多,但都太过于消耗带宽,所以我想到了用Ajax来分页,利用返回的Json来处理返回的数据, 大大简化了带宽的压力. 先说下思路,无非就是异步 ...

  5. 5.Hibernate实现全套增删改查和ajax异步分页

    1.1 创建如下oracle数据库脚本 drop sequence seq_stu; create sequence SEQ_STU minvalue maxvalue start increment ...

  6. PHP中使用jQuery+Ajax实现分页查询多功能操作

    1.首先做主页面Ajax_pag.php 代码如下: <!DOCTYPE html> <html> <head> <meta charset="UT ...

  7. WPF如何实现一个漂亮的页签导航UI

    最近看到一个比较漂亮的UI主界面,该UI是用左边的页签进行导航,比较有特色,就想着尝试用WPF来实现一下.经过一番尝试,基本上将UI设计图的效果用WPF程序进行了实现.下面介绍一下主要的思路: 1 U ...

  8. C# 重绘tabControl,添加关闭按钮(页签)

    C# 重绘tabControl,添加关闭按钮(页签) 调用方法 参数: /// <summary> /// 初始化 /// </summary> /// <param n ...

  9. 实现TabView(页签)效果

    今天花了点时间,设计了一个网页上用的tabview(页签.tabcontrol)效果.个人觉得实现得比较不错,网页元素用得比较少,js代码也比较精练.测试了一下支持IE.FireFox以及chrome ...

随机推荐

  1. Google Zxing 生成二维码

    Net Zxing 源码地址 http://zxingnet.codeplex.com/ github 地址 https://github.com/zxing/zxing 新建一个Winform 项目 ...

  2. KeyStore相关

    http://blog.csdn.net/liuquan0071/article/details/50318405 一. HTTPS概念 1. 简介 HTTPS(全称:Hypertext Transf ...

  3. java多线程(一)

    一.进程,线程,并发,并行 1.1 进程和线程的区别       进程是指:一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程.比如在Windows系统中,一个运 ...

  4. android Firebase中配置 Crashlytics

    首先登陆Google账号 https://firebase.google.com/ 创建项目 配置Android 1.注册应用 2.下载配置文件 3.添加firebaseSDk 配置后台分析的Cras ...

  5. echarts自定义tooltip提示框内容

    1.echarts自定义tooltip提示框内容 https://blog.csdn.net/dreamsup/article/details/56667330 2.关于Echarts的formatt ...

  6. RTT之内存管理及异常中断

    内存管理分静态内存管理和动态内存管理(根据大小又分2种) 静态内存管理:创建.删除.初始化.解绑.申请和释放.初始化内存池是属于静态内存管理,与创建内存池不同的是,此处内存池对象所使用的内存空间是由用 ...

  7. Naive Operations

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6315 学习博客:https://blog.csdn.net/SunMoonVocano/article ...

  8. Murano Weekly Meeting 2016.05.10

    Meeting time: 2016.May.10 1:00~2:00 Chairperson:  Serg Melikyan, from Mirantis Meeting summary: 1. m ...

  9. 微信web开发者工具 && 微信调试页面

    微信开发者工具 做微信公众号的过程中,自然避免不了登录账号然后进行调试,但是在chrome上我们没有办法登录,这是一个令人头疼的问题,比如这个公众号网页,只会提示出错,因为开发者限制了公众号网页的登录 ...

  10. 设置windows 10 wifi

    1.cmd 管理员 2.执行:netsh wlan set hostednetwork mode=allow ssid=test key=123456789 3.执行:netsh wlan start ...