如何通过单击数据表中的列名来防止排序?

How can I prevent ordering by click on column names in datatables?

我想防止通过单击列名更改顺序。

我试过了:

"ordering": false,

这实际上删除了点击 possibility.But 然后排序不再有效。我想保留它,只阻止用户点击列名。我尝试了一切,例如:

$(".sorting").addClass('sorting_disabled').removeClass('sorting');

$(".sorting").click(function(){return false;});

  $( ".sorting" ).click(function( event ) {
  event.preventDefault();
});

没有任何效果。

您可以使用以下内容:

$(document).ready(function() {

    var table = $('#example').DataTable( {
        "initComplete": function(settings, json) {
            $('th.sorting').off();
            $("th.sorting").css('cursor', 'default');
            $("th.sorting_asc").css('cursor', 'default');
            $("th.sorting_desc").css('cursor', 'default');
        }
    } );

    // to show sorting is still possible:
    table.order.listener( '#mysorter', 0 );

} );

这会从 table 的列 headers 中删除排序事件(jQuery off() 函数),并确保鼠标图标不会变为滚动标题时手。

它将箭头留在原处,因此您可以看到哪种排序有效。

为了显示仍然可以排序,我在页面中添加了一个按钮:

<button id="mysorter" type="button">Click Me!</button>

table.order.listener() 会导致列索引 0 在每次单击按钮时排序 asc/desc。

(如果您还想去掉排序箭头,请参阅 here。)