禁用所有列的排序 - 数据表



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

简短的回答是:你不能!完全更改排序功能的唯一方法是设置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();
   })  
 }   
})

演示 -> http://jsfiddle.net/s7uzzkcg/

最新更新