jQuery dataTables:点击 thead 应该对所有列进行降序排序,然后升序排序

jQuery dataTables : Clicking thead should sort descending and then ascending for all columns

我正在尝试更改默认排序方向。默认顺序是先升后降。我正试图扭转它。

排序方向应该是独立的,并且应该适用于所有列(列数因不同的表而异)我必须启动数据表的脚本是通用的。

排序应仅在点击时应用。

我找到了几个示例,但它们是特定于列的 https://datatables.net/examples/advanced_init/sort_direction_control.html

这是我的脚本

jQuery(function($) {
   $(".datatable").dataTable({
    "paging": false,
    "searching": false,
    "info": false,
    "orderCellsTop": true
  });
});

所有选项和设置都有在内部 DataTable.defaults 对象中定义的默认值。此对象可用于通过 $.fn.dataTable.defaults 进行更改。这在网站上的记录很少,但在代码中有很好的记录。打开一个 none 缩小的 jquery.dataTables.js 并搜索 DataTable.defaults.

要反转 所有 列的默认顺序,因此它变成 desc, asc :

$.fn.dataTable.defaults.column.asSorting = ['desc', 'asc'];

将第一列的初始顺序设置为 desc

$.fn.dataTable.defaults.aaSorting = [[0,'desc']];

同样,您可以简单地更改默认值,这样您根本不需要在 dataTable() 中设置任何通用选项:

$.fn.dataTable.defaults.bPaginate = false;    //paging: false
$.fn.dataTable.defaults.bFilter = false;      //searching: false
$.fn.dataTable.defaults.bInfo = false;        //info: false
$.fn.dataTable.defaults.bSortCellsTop = true; //orderCellsTop: true

查看演示 -> http://jsfiddle.net/f31pncb4/

你可以在初始化的时候做:

jQuery(function ($) {
    $(".datatable").dataTable({
        "paging": false,
        "searching": false,
        "info": false,
        "orderCellsTop": true,
        aoColumnDefs: [
            {
                orderSequence: ["desc", "asc"],
                aTargets: ['_all']
            }
        ]
    });
});

Richard 的上述回答有效,但却是遗留方法。当前版本的语法相似且更简单:

var myTable = $('table').DataTable({
    "columnDefs": [
        {
            "orderSequence" : [ "desc", "asc" ],
            "targets" : "_all"
        }
    ]
});

稍微偏离主题但请注意 DataTable() 中的 capital "D" 其中 returns 一个 api 实例而不是 jquery 对象.这很重要,因为这样做可以让您在初始化后更轻松地访问 api。

通过 Grue 的答案扩展 @Eaten,如果需要,我们可以使用相同的 orderSequence API 仅使用 HTML 来反转排序顺序。

<thead>下,我们可以将<th>改成如下:

<th data-order-sequence='[ "desc", "asc" ]'>Amount</th>