我试过这个:
$('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(),所以我什至没有考虑它。
最佳答案
如果您的数据表标题是静态的,您应该能够直接将事件绑定(bind)到复选框:
$('.headerCheckbox').on('click', function (event) {
event.stopPropagation();
headerCheckboxClicked($(this));
});
你的问题是关于委托(delegate)如何工作,使用事件冒泡(并使用事件目标过滤掉它),所以实际上你在 body
级别停止传播,标题点击事件已经被触发,并且所以已经调用了排序方法。
关于javascript - 如何向 jQuery 的 on() 回调添加事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29078446/