我试过了:
$('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 Documentation中使用的好例子。
替代解决方案我在指定列上禁用排序的数据表方式。
table3 = $("#tableComputerPackages").DataTable({
"order": [[1, "desc"]],
"columnDefs":
[
{
"targets": 0,
"orderable": false
}
]
});
一个。沃尔夫对这个问题有了答案。这是因为我使用3参数版本而不是2来编写on(),所以我甚至没有考虑过它。
答案 0 :(得分:2)
如果您的数据表头是静态的,您应该只能将事件直接绑定到复选框:
$('.headerCheckbox').on('click', function (event) {
event.stopPropagation();
headerCheckboxClicked($(this));
});
您的问题是关于委派如何工作,使用事件冒泡(并使用事件目标过滤掉),所以实际上您在body
级别停止传播,标题点击事件已经被触发,因此排序方法已被称为。