在一些搜索列表的页面中,我们会遇到一些需要处理页签的需求,一般这样的页面,要么是在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. 多线程编程_CyclicBarrier

    1.类说明: 一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point).在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 Cycl ...

  2. netbeans 窗体字体大小设置

    当计算机分辨率变大的时候,打开netbeans的时候,字体就会变得越来越小 看起来很不爽,所要就要改变一下,窗体字体大小. 在网上找到了一段修改netbeans窗体字体大小的配置信息,现标记起来,以便 ...

  3. mathjax符号

    mathjax公式 \(\delta\): \delta \(\Delta\): \Delta \(\int\): \int \(\iint\): \iint \(\approx\): \approx ...

  4. Java学习第十六天

    1:List的子类(掌握) (1)List的子类特点 ArrayList: 底层数据结构是数组,查询快,增删慢 线程不安全,效率高 Vector: 底层数据结构是数组,查询快,增删慢 线程安全,效率低 ...

  5. Wpf鼠标点击坐标转为屏幕坐标/后台重新设置在Canvas和Grid上的位置

    Point getP = PointToScreen(Mouse.GetPosition(this)); DockPanel.SetValue(Canvas.LeftProperty, 1.0); D ...

  6. Oracle入门基础(1)

    1.数据库系统和数据管理系统的区别? 数据库系统=数据库的管理系统+oper操作员+硬件 2.Oracle的版本   8i /9i   10g/11g   12c(cloud) 3.Oracle主要组 ...

  7. intellijidea课程 intellijidea神器使用技巧1-3 idea下载

    下载: 下载地址:https://www.jetbrains.com/idea/download/ download==>windows==>ultimate版本(付费版本免费试用30天) ...

  8. React API

    组件 API setState 合并 nextState 和当前 state. 这是在事件处理函数中和请求回调函数中触发 UI 更新的主要方法. 另外,也支持可选的回调函数,该函数在 setState ...

  9. js-对象的方法详解

    Object.prototype 上的方法: constructor 返回创建该对象的构造函数 var arr = []; arr.constructor == function Array() { ...

  10. JS之获取子节点

    在JS中获取子节点有以下几种方法: firstElementChild.firstChild.childNodes和children 我们通过一个例子来分析这几种方法的区别(获取div下的p标签) 输 ...