Jquery 分页插件之Jquery Pagination


Posted in Javascript onAugust 25, 2015

实用jQuery分页特效插件jquery.pagination.js,基于jQuery实现,可根据pageselectCallback函数callback调用通过ajax调用动态数据,目前的方法是生成JSON数据到JS文件,调用的数据是JSON格式数据,缺点是数据是一次性读出来的,效率会差些,插件支持众多参数的自定义配置功能,还是很不错的,大家可以根据自己的想法进行改进。

有同学问道jquery的简单分页插件,原来有同事写过一个简单[Javascript 使用回调函数的自定义分页插件--自带样式]。

今天分享一个功能比较强大的jquery分页插件:jquery.pagination。

官方地址:http://esimakin.github.io/twbs-pagination/

简介与说明

此Jquery插件为Ajax分页插件,一次性加载,故分页切换时无刷新与延迟,如果数据量较大不建议用此方法,因为加载会比较慢。

原插件CSS不太合理,使用浮动,故无法方便实现左右方向的定位,且未清除浮动,在中文修改版中我对其进行了优化,使其支持text-align的定位。

对原js文件注释进行了中文翻译,demo页面也是汉化了的,demo页面的js与原demo有一些出入,但核心不变。

使用方法

跟一般的jQuery插件一样,此插件使用也很简单便捷。方法是pagination,例如$("#page").pagination(100);,这里的100参数是必须的,表示显示项目的总个数,这是最简单的使用,得到的显示如下:

还有一点值得一提的是分页列表需要放在class类为pagination的标签内,您可以使用text-align属性控制分页居中显示还是居右显示。

回调函数一般用来装载对应分页显示的内容,具体参见demo源文件。

参数

使用举例

例如下面的使用代码:

$("#Pagination").pagination(56, {
  num_edge_entries: 2,
  num_display_entries: 4,
  callback: pageselectCallback,
  items_per_page:1
});

项目demo:

定义分页相关参数:

var pageSize = 10;
var allCount = 0;
var currentPage = 1;
var ajaxUrl = '../../Service/ActiceHandler.ashx';
var oper = "list";

html:

<table id="sample-table-2" class="table table-striped table-bordered table-hover">
                 <thead>
                   <tr> 
                    <th>编号</th>
                    <th>标题</th>
                     <th>缩略图</th> 
                         <th>海报</th>
               <%--     <th>社区</th>
                    <th>商品</th>--%>
                    <th>开始时间</th>
                    <th>结束时间</th>
                    <th>是否幻灯</th>
                    <th>操作</th>
                  </tr>
                 </thead>
                <tbody id="tBodyList">
                </tbody>
              </table>
              <div id="Pagination" class="row"></div>

获取数据并调用分页函数:

function GetList(pageIndex) {
  var searchName = $("#txtSearchName").val();
  var cityId = GetCity();
  var endTime;
  var beginTime;
  var communityName;
  var title;
  $.ajax({
    type: "post",
    dataType: 'json',
    url: ajaxUrl,
    data: {
      pageSize: pageSize,
      Operate: "list",
      currentPageIndex: pageIndex,
      endTime: $("#txtDeadTime").val(),
      Cityid: cityId,
      beginTime: $("#txtStartTime").val(),
      communityName: $("#txtsqname").val(),
      title: $("#txttitle").val()
    },
    success: function (data, textStatus) {
      if (data != null) {
        var model = eval(data);
        if (model != null && model != "undefined") {
          var data = eval(model.Instance);
          allCount = model.TotalCount;
          var html = '';
          ListActive = data;
          $.each(data, function (key, val) {
            html = html + '<tr>';
            html = html + ' <td width="100px" class="text-primary">' + val.id + '</td>';
            html = html + ' <td class="left">' + val.title + '</td>';
            html = html + ' <td class="left"><img width="80px" height="60px" src="' + val.smallphotourl + '"></img></td>';
            html = html + ' <td class="left"><img width="80px" height="60px" src="' + val.bigphotourl + '"></img></td>'; 
            html = html + ' <td class="left">' + $.formatDate("yyyy-MM-dd HH:mm", data.begintime) + '</td>';
            html = html + ' <td class="left">' + $.formatDate("yyyy-MM-dd HH:mm", data.endtime) + '</td>';
            html = html + ' <td class="left">' + '<a href="#modal-form" onclick="SetHomeIndex(\'' + val.id + '\',\'' + val.title
              + '\');return false" class="btn btn-xs btn-success " data-toggle="modal"><i class="icon-key"></i>首页幻灯设置</a>' + '</td>';
            html = html + ' <td class="left">'; 
            if (oper == "list") {
              html = html + ' <a href="Add.aspx?RightID=0&Id=' + val.id + '" class="green" title="编辑"><i class="icon-edit bigger-130"></i></a> ';
              html = html + ' <a href="#" onclick="DeleteActive(\'' + val.id + '\',\'' + val.title + '\')" class="red" title="注销">';
              html = html + ' <i class="icon-trash bigger-130"></i></a>';
            }
            else if (oper == "msg") { 
              html = html + '  <input type="checkbox" onchange=\'SetCheckedPro("' + val.id + '","' + val.title + '");return false;\' id="seelctactive_' + val.id + '" value="' + val.title + '" />';
            }
            html = html + ' <a href="#" onclick="PreviewUrl(\'http://sq.huilife.cn/index.php?g=Wap&m=Homeactivity&de<a href="http://www.suchso.com/programmer/chengxuyuan-duanzi-bug-shangwang.html" class="keylink" title=" Bug修复" target="_blank">bug</a>=1&a=show&id=' + val.id + '\')" class="blue" title="查看"><i class="icon-zoom-in bigger-130"></i></a> ';
            html = html + ' </td></tr>'; 
          });
          $("#tBodyList").html(html);
          //设置分页
          if (currentPage == 1) {
            var initPagination = function () {
              // 创建分页
              $("#Pagination").pagination(allCount, {
                num_edge_entries: 1, //边缘页数
                num_display_entries: 2, //主体页数
                prev_text: "<<",
                next_text: ">>",
                callback: PageSelectCallback,
                items_per_page: pageSize //每页显示1项
              });
            }();
            currentPage = 100;
            if (allCount == 0) $('#divNumInfo').html("0-0条 共0条");
          }
        }
        else {
          alert("加载数据失败!"); return;
        }
      }
    },
    complete: function (XMLHttpRequest, textStatus) {
    },
    error: function (e) {
      alert("加载数据错误!"); return;
    }
  });
}

示例二:

Jquery Pagination插件代码:

<div id="page2" class="m-pagination"></div>
<script type="text/javascript">
//请求格式: .../GetPageData?query=test&pageIndex=0&pageSize=10
//返回数据: {"data":[1,2,3,4,5,6,7,8,9,10],"total":800}
$("#page2").page({
  remote: {
    url: '/GetPageData', //请求地址
    params: { query: "test" },    //自定义请求参数
    beforeSend: function(XMLHttpRequest){
      //...
    },
    success: function (result, pageIndex) {
      //回调函数
      //result 为 请求返回的数据,呈现数据
    },
    complete: function(XMLHttpRequest, textStatu){
      //...
    }
    pageIndexName: 'pageIndex',   //请求参数,当前页数,索引从0开始
    pageSizeName: 'pageSize',    //请求参数,每页数量
    totalName: 'total'       //指定返回数据的总数据量的字段名
  }
});
</script>

以上内容是本文针对Jquery 分页插件之Jquery Pagination的全部叙述,希望大家喜欢。

Javascript 相关文章推荐
各浏览器对document.getElementById等方法的实现差异解析
Dec 05 Javascript
在jQuery中处理XML数据的大致方法
Aug 14 Javascript
JS动态给对象添加事件的简单方法
Jul 19 Javascript
Angular.JS学习之依赖注入$injector详析
Oct 20 Javascript
基于Vue 2.0的模块化前端 UI 组件库小结
Dec 21 Javascript
Vue2.0仿饿了么webapp单页面应用详细步骤
Jul 08 Javascript
Vue.js实现的计算器功能完整示例
Jul 11 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
Sep 29 Javascript
为vue项目自动设置请求状态的配置方法
Jun 09 Javascript
三分钟教你用Node做一个微信哄女友(基友)神器(面向小白)
Jun 21 Javascript
jQuery Ajax async=&gt;false异步改为同步时,解决导致浏览器假死的问题
Jul 22 jQuery
详解Vue之计算属性
Jun 20 Javascript
js实现的tab标签切换效果代码分享
Aug 25 #Javascript
JavaScript实现向右伸出的多级网页菜单效果
Aug 25 #Javascript
jquery+html5时钟特效代码分享(可设置闹钟并且语音提醒)
Mar 30 #Javascript
jquery实现动画菜单的左右滚动、渐变及图形背景滚动等效果
Aug 25 #Javascript
jquery实现的淡入淡出下拉菜单效果
Aug 25 #Javascript
iframe中子父类窗口调用JS的方法及注意事项
Aug 25 #Javascript
JavaScript+CSS实现仿天猫侧边网页菜单效果
Aug 25 #Javascript
You might like
php IP转换整形(ip2long)的详解
2013/06/06 PHP
PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】
2017/04/19 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
2019/04/10 PHP
详解Laravel服务容器的绑定与解析
2019/11/05 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
驱动事件的addEvent.js代码
2007/03/27 Javascript
IE和Firefox下event事件杂谈
2009/12/18 Javascript
浅谈Javascript 执行顺序
2013/12/18 Javascript
js制作带有遮罩弹出层实现登录注册表单特效代码分享
2015/09/05 Javascript
JS及PHP代码编写八大排序算法
2016/07/12 Javascript
JS+CSS3模拟溢出滚动效果
2016/08/12 Javascript
微信小程序 底部导航栏目开发资料
2016/12/05 Javascript
详解JavaScript 中getElementsByName在IE中的注意事项
2017/02/21 Javascript
NodeJS仿WebApi路由示例
2017/02/28 NodeJs
详解vue.js+UEditor集成 [前后端分离项目]
2017/07/07 Javascript
JavaScript生成简单等差数列
2017/11/28 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
2018/05/22 Javascript
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
2018/08/03 Javascript
JavaScript实现图片合成下载的示例
2020/11/19 Javascript
Python开发WebService系列教程之REST,web.py,eurasia,Django
2014/06/30 Python
Python正则表达式使用范例分享
2016/12/04 Python
python使用sessions模拟登录淘宝的方式
2019/08/16 Python
python yield关键词案例测试
2019/10/15 Python
关于初始种子自动选取的区域生长实例(python+opencv)
2020/01/16 Python
Jupyter notebook无法导入第三方模块的解决方式
2020/04/15 Python
深入浅析python 中的self和cls的区别
2020/06/20 Python
Onzie官网:美国时尚瑜伽品牌
2019/08/21 全球购物
九年级历史教学反思
2014/01/27 职场文书
运动会邀请函范文
2014/01/31 职场文书
教师党员自我评议不足范文
2014/10/19 职场文书
画展邀请函
2015/01/31 职场文书
求职推荐信范文
2015/03/27 职场文书
合作合同协议书
2016/03/21 职场文书
话题作文之学会尊重
2019/12/16 职场文书
Android开发之WECHAT微信小程序路由跳转的两种形式
2022/04/12 Java/Android