禁用所有列的排序 - dataTables

时间:2017-05-18 12:53:21

标签: jquery datatables

我正在使用DataTables 1.10.10。我想在单击(打开)复选框时禁用所有列的排序,反之亦然。这是在初始化之后完成的。

1 个答案:

答案 0 :(得分:0)

简短的回答是:你做不到!完全更改排序功能的唯一方法是设置ordering: false并重新初始化表。

然而,通过一些jQuery魔术,您可以遍历每个<th>,存储事件unbind(),然后在需要再次排序时将存储的事件重新附加到<th>。这不是一项微不足道的任务。每列绑定了三个事件:clickkeypressselectStart.dt。此外,每个事件都必须进行深度克隆,因为它们在unbind()时被销毁。

以下是单击复选框时执行此操作的示例:

var storedEvents;
$('#sort').change(function() {
 if (!$(this).is(':checked') && storedEvents) {
   $('#example thead th').each(function(index, th) {
      for (var event in storedEvents[index]) {
         $(th).bind(event, storedEvents[index][event][0])
      }
   })  
 } else {
   storedEvents = [];
   $('#example thead th').each(function() {
      storedEvents.push( $.extend( true, {}, $._data( this, "events" ) ));
      $(this).unbind();
   })  
 }   
})

演示 - &gt;的 http://jsfiddle.net/s7uzzkcg/