如何向 jQuery 的 on() 回调添加事件?

How to add an event to jQuery's on() callback?

我试过这个:

$('body').on('click', '.headerCheckbox', function (event) { // Add event here and magic should happen?
    event.stopPropagation(); // event output in firebug: event: [object Object]
    headerCheckboxClicked($(this));
});

它是一个 table,我在其中一列的 header 中有一个复选框。我想停止事件冒泡,这样 table 就不会收到事件,因此它不会对列进行排序。

我认为这是正确的方法,但 table 添加该行后的静止图像排序。我在 jQuery Documentation.

中找不到合适的示例

替代解决方案 数据table 方法我禁用了对指定列的排序。

    table3 = $("#tableComputerPackages").DataTable({
        "order": [[1, "desc"]],
        "columnDefs":
        [
            {
                "targets": 0,
                "orderable": false
            }
        ]
    });

一个。沃尔夫想到了这个问题的答案。这是因为我用 3 个参数版本而不是我习惯的 2 个参数版本编写了 on(),所以我什至没有考虑它。

如果您的数据表 header 是静态的,您应该能够直接将事件绑定到复选框:

$('.headerCheckbox').on('click', function (event) {
      event.stopPropagation(); 
      headerCheckboxClicked($(this));
});

你的问题是关于委派如何工作,使用事件冒泡(并使用事件目标过滤掉它),所以实际上你在 body 级别停止传播,header 点击事件已经触发,所以排序方法已经调用。