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

标签 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(),所以我什至没有考虑它。

最佳答案

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

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

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

关于javascript - 如何向 jQuery 的 on() 回调添加事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29078446/

相关文章:

api - Eventbrite API 中的重复事件

javascript - jQuery 方法无法将数据传递到 REST 服务器

javascript - 违规长时间运行的 JavaScript 任务花费了 xx 毫秒

javascript - 我需要添加什么代码才能让这个 javascript 在文本末尾自动添加 3 个点?

jQuery 元素的第 n 个子元素,它是一个变量,也是索引变量

java - 按 T​​AB 键填充 JTable

c# - 静态 ObservableCollection 事件未触发

javascript - 使用 ng-pattern 禁用 angularjs 中的按钮

javascript - 将 32 位无符号整数转换为大端字节数组的最稳定方法?

javascript - AngularJS 是否会在 jQuery 的回退中加载?