首先,我可以通过
禁用表头中的排序$("button.disable-sorting").click(function(){
$("table thead th").off("click.DT");
});
现在我的问题是如何绑定表头上的排序,我试过
$("button.restore-sorting").click(function(){
$("table thead th").bind("click.DT");
});
但似乎没有用。关于如何绑定数据表表头的排序功能的任何帮助想法?
PS:im on DataTables 1.10.12
答案 0 :(得分:2)
我会在启动后立即存储原始事件监听器。在下面的示例中,我通过将它们保存到数组映射<th>
来保留第一个events
的所有事件:
var table = $('#example').DataTable({
initComplete: function() {
$.each($._data($('#example thead th')[0], 'events'), function(name, obj) {
events[name] = obj[0]
})
}
})
现在,您可以在表单
上找到“本机”dataTables事件的地图events['click'] => old event handler
events['keypress'] => old event handler
...
然后,为特定标头(或所有标头)打开和关闭排序(以及其他dataTables事件驱动功能)非常简单。这是一个带有禁用/启用按钮的小型演示:
//remove original event listeners, add alternative
$("#disable").click(function() {
$("#example thead th:nth-child(1)")
.unbind()
.bind('click', function() {
alert('all listeners removed')
})
})
//restore any original event
$("#enable").click(function() {
var $th = $("#example thead th:nth-child(1)")
$th.unbind()
for (var name in events) {
$th.bind(name, events[name])
}
})
演示 - &gt; http://jsfiddle.net/8sbcage4/ (禁用/启用第一个标头的dataTables事件)