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

时间:2015-03-16 13:48:25

标签: javascript jquery events event-handling datatables

我试过了:

$('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(),所以我甚至没有考虑过它。

1 个答案:

答案 0 :(得分:2)

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

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

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