我正在使用数据表 1.10.10。我想在单击复选框(打开(时禁用所有列的排序,反之亦然。这将在初始化后完成。
简短的回答是:你不能!完全更改排序功能的唯一方法是设置ordering: false
并重新初始化表。
但是,使用一些jQuery魔术,您可以遍历每个<th>
,存储事件,unbind()
,然后在需要再次排序时将存储的事件重新附加到其<th>
。这不是一项微不足道的任务。每列绑定有三个事件:click
、keypress
和selectStart.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/