欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > > 内容正文

jQuery Pagination plugin 实现分页功能(表格分页,ajax请求后台数据)

来源: 开发者 投稿于  被查看 12538 次 评论:158

jQuery Pagination plugin 实现分页功能(表格分页,ajax请求后台数据)


jQuery Pagination plugin官方文档http://esimakin.github.io/twbs-pagination/#page-6

使用方法:

<link rel="stylesheet" href="../node_modules/bootstrap/dist/css/bootstrap.css">
<script src="../node_modules/jquery/dist/jquery.min.js"></script>
<script src="../private/jquery.twbsPagination.js"></script>
<div id="pagination" class="fr"></div>
<scritp>
$(function()
 {
    getList();
 }
)
</script>
function getList(page) {
    var $pagination = $('#pagination');
    // 定义默认的参数
    var defaultOpts = {
        currentPage: page,
        totalPages: 10,
        first: '',
        last: '',
        prev: '<span aria-hidden="true">&laquo;</span>',
        next: '<span aria-hidden="true">&raquo;</span>'
    };
    // 初始化插件
    $pagination.twbsPagination(defaultOpts);
    $.ajax({
        type: 'POST',
        url: '/rest/userlist',
        dataType: 'json',
        data: {page: page},
        success: function (msg) {
            // 页面初始化获取总页数
            var totalPages = msg.totalPages;
            var currentPage = $pagination.twbsPagination('getCurrentPage');
            // 填充用户总数
            var total = msg.total;
            $('.userNum').html(total);
            // 填充表格数据
            setUserTab(msg.data);
            // 销毁旧的分页,这一步很重要
            $pagination.twbsPagination('destroy');
            $pagination.twbsPagination($.extend({}, defaultOpts, {
                currentPage: page ? page : 1, // 判断,如果有page参数,就用page,如果没有的话,就默认为1
                startPage: currentPage,
                totalPages: totalPages
            })).on('page', function (evt, page) {
                getList(page); // 传递当前的页码到后台查询数据;
            });
        }
    });
}

写这个功能的时候遇到一个特别坑爹的地方,初始化的总页数要从后台获取,通过ajax获取,所以我将分页的初始化写在ajax里面,然后点击每个页码的时候,还要再调一次ajax的方法,再次请求后台数据,这样写了之后,初始化的时候ajax会请求两次,就是这里,被坑得不要不要的
后面又看官网的例子,如下:

var $pagination = $('selector'); //先获取分页的元素;
var defaultOpts = {
  totalPages: 20
}; // 定义默认参数,这里的总页数是20页;
$pagination.twbsPagination(defaultOpts); // 调用pagination的方法;
// ajax请求,获取后台数据
$.ajax({
  ...,
  success: function (data) {
  var totalPages = data.newTotalPages; // 给总页数重新赋值
  var currentPage = $pagination.twbsPagination('getCurrentPage'); // 获取当前页面;
  $pagination.twbsPagination('destroy'); // 销毁之前生成的分页
  // 修改默认参数,将新的数据赋值给参数
  $pagination.twbsPagination($.extend({}, defaultOpts, {
  startPage: currentPage,
  totalPages: totalPages
}));
}
});

用户评论