我正在使用jQuery DataTables插件。我创建了一个自动获得aria-label
标签的复选框。
我认为这会导致不良行为,我想定义一个没有此aria-label
属性的复选框。
<th id="batch-select-all" class="sorting" tabindex="0" aria-controls="board" rowspan="1" colspan="1" style="width: 21px;" aria-label=": activate to sort column ascending">
<input type="checkbox">
</th>
我使用aria-label
删除了$("#batch-select-all").removeAttr('aria-label');
值,但事件继续被触发。
如何让此事件监听器停止侦听复选框上的click事件?
答案 0 :(得分:2)
问题不在aria-label
属性中。您的代码似乎是从源代码检查器复制的,这些属性是由jQuery DataTables动态生成的。
解决方案#1
您可以使用复选框禁用列的排序,将data-orderable="false"
属性添加到th
元素,如下所示:
<th id="batch-select-all" data-orderable="false">
<input type="checkbox">
</th>
此外,您可以使用columns.orderable
选项禁用特定列的排序。
请参阅this jsFiddle以获取代码和演示。
解决方案#2
或者,在复选框的单击事件处理程序中,您需要调用stopPropagation()
以避免单击事件传播到表标题。
$('#example thead th').on('click', '#select-all', function(e){
e.stopPropagation();
});
请参阅this jsFiddle以获取代码和演示。