DataTables更改分页按钮的数量

时间:2014-06-24 10:05:44

标签: jquery pagination datatables

默认情况下,DataTables插件会显示7个分页按钮(包括省略号)

上一页 1 2 3 4 5 ... 10 下一步

我希望能够将此更改为较小的数字,例如

上一页 1 ... 10 下一页

我无法在文档中的任何位置找到它。

我找到了this plugin,但它说' 已弃用并且

  

DataTables 1.10内置了此功能。

但它没有显示更改此位置。

3 个答案:

答案 0 :(得分:26)

我在摆弄DataTable javascript对象和DataTables'源代码后终于找到了它。

您必须添加此行(在初始化之前或之后)

$.fn.DataTable.ext.pager.numbers_length = 3;

注意,这将显示为

上一页 1 ... 10 下一页

而不是

上一页 1 2 ... 10 下一页< / KBD>

所以请务必包含长度编号中的省略号。

修改

我在浏览页面时看到了这个解决方案的一些问题。

我必须像这样重写他们的_numbers函数:

function _numbers(page, pages) {
    var
        numbers = [],
        buttons = 5, // added here the number of buttons
        half = Math.floor(buttons / 2);

    if(pages <= buttons) {
        numbers = _range(0, pages);
    } else if(page <= half) {
        numbers = _range(0, buttons - 2);

        numbers.push("ellipsis");
        numbers.push(pages - 1);
    } else if(page >= pages - 1 - half) {
        numbers = _range(pages - (buttons - 2), pages);

        numbers.splice(0, 0, "ellipsis");
        numbers.splice(0, 0, 0);
    } else {
        numbers.push(page); // changed this from _range(page - 1, page + 2);
        numbers.push("ellipsis");
        numbers.push(pages - 1);
        numbers.splice(0, 0, "ellipsis");
        numbers.splice(0, 0, 0);
    }

    numbers.DT_el = "span";

    return numbers;
}

并用它来指出DataTables到我自己的功能:

$.fn.DataTable.ext.pager.simple_numbers = function(page, pages) {
    return ["previous", _numbers(page, pages), "next"];
};

另外,我必须将_range函数复制到我的main.js文件中。

答案 1 :(得分:0)

显然,DataTableJS的理想最小值是:

$.fn.DataTable.ext.pager.numbers_length = 5;

答案 2 :(得分:0)

使用https://www.gyrocode.com/articles/jquery-datatables-pagination-without-ellipses/组合设置

在脚本加载后添加以下内容

<script>
    $.fn.DataTable.ext.pager.numbers_length = 3;
    $.fn.DataTable.ext.pager.full_numbers_no_ellipses = function (e, r) { var a = [], n = $.fn.DataTable.ext.pager.numbers_length, t = Math.floor(n / 2), l = function (e, r) { var a; void 0 === r ? (r = 0, a = e) : (a = r, r = e); for (var n = [], t = r; t < a; t++)n.push(t); return n }; return (a = r <= n ? l(0, r) : e <= t ? l(0, n) : e >= r - 1 - t ? l(r - n, r) : l(e - t, e + t + 1)).DT_el = "span", ["first", "previous", a, "next", "last"] };
</script>