再次绑定单击按钮上的排序功能
Posted
技术标签:
【中文标题】再次绑定单击按钮上的排序功能【英文标题】:bind again the sorting capabilities on click button 【发布时间】:2016-11-13 00:12:28 【问题描述】:首先,我可以禁用表头中的排序
$("button.disable-sorting").click(function()
$("table thead th").off("click.DT");
);
现在我的问题是如何绑定表头上的排序,我试过了
$("button.restore-sorting").click(function()
$("table thead th").bind("click.DT");
);
但似乎不起作用。关于如何绑定数据表表头的排序功能的任何帮助想法?
PS:我在 DataTables 1.10.12 上
【问题讨论】:
disable a column sorting using jquery datatables的可能重复 @theinarasu:不,他的问题是数据表初始化,而我的问题是在初始化/点击事件之后。 @CodeDemon,请尝试在绑定语句中添加事件处理程序。 @Krishnakumar_Muraleedharan:对不起,我不明白,你能解释一下吗?哪个事件处理程序?和绑定语句? @CodeDemon,我的理解是绑定事件会有 $(selector).bind(eventType,eventHandlerFunction) 的语法。当您尝试再次绑定事件时,请尝试使用相同的语法吗? 【参考方案1】:我会在初始化后立即存储原始事件侦听器。在下面的示例中,我通过将第一个 <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])
)
demo -> http://jsfiddle.net/8sbcage4/(禁用/启用第一个标头的 dataTables 事件)
【讨论】:
以上是关于再次绑定单击按钮上的排序功能的主要内容,如果未能解决你的问题,请参考以下文章
Javascript/HTML/Puppeteer - 如何访问属性数据绑定中的值(单击按钮)?