我试过这个:
$('body').on('click', '.headerCheckbox', function (event) { // Add event here and magic should happen?
event.stopPropagation(); // event output in firebug: event: [object Object]
headerCheckboxClicked($(this));
});
这是一个表,其中一列的标题中有一个复选框。我想停止事件冒泡,这样表就不会得到事件,也不会对列进行排序。
我以为这是正确的方式,但在我加上这一行后,桌子仍然完好无损。我在jQuery文档中找不到一个好的例子。
替代解决方案禁用指定列排序的数据表方式。
table3 = $("#tableComputerPackages").DataTable({
"order": [[1, "desc"]],
"columnDefs":
[
{
"targets": 0,
"orderable": false
}
]
});
A。沃尔夫想好了这个问题的答案。这是因为我用3个参数版本而不是我习惯的2个参数版本编写了on(),所以我甚至没有想过它
如果您的数据表标题是静态的,您应该能够直接将事件绑定到复选框:
$('.headerCheckbox').on('click', function (event) {
event.stopPropagation();
headerCheckboxClicked($(this));
});
您的问题是关于委派如何工作,使用事件冒泡(并使用事件目标过滤掉它),所以实际上您在body
级别停止了传播,头点击事件已经触发,所以排序方法已经调用。