gpt4 book ai didi

javascript - 使用 jQuery,如何让单击事件处理程序响应选定的表列?

转载 作者:搜寻专家 更新时间:2023-11-01 05:10:45 25 4
gpt4 key购买 nike

jQuery v1.11

给定一个包含 6 列的 HTML 表格,我希望表格中第 2、3、5 和 6 列的单元格响应 click 事件。因此,如果用户单击第一列或第四列中的单元格,则不应调用 click 事件处理程序。

这可以防止在用户单击第一列时调用事件处理程序:

 $('#my-table').on('click', 'tbody td:not(:first-child)', function (e) {
alert("I've been clicked on!");
});

当用户点击第 4 列时,他会阻止事件处理程序被调用:

 $('#my-table').on('click', 'tbody td:not(:nth-child(4))', function (e) {
alert("I've been clicked on!");
});

我的问题是,我如何修改以上内容,以便在第一列或第四列发生点击时不调用事件处理程序。

JSFiddle

编辑:@micnil 回答了我的具体问题,我会发现了解他建议的模式很有用。然而,@Oleg 花时间指出了一个更好的方法。他建议我应该将事件处理程序绑定(bind)到表格,而不是将事件处理程序绑定(bind)到每个单元格。在我的例子中,这被证明更好。

使用 performance.now()discussed here ,我得到以下结果,为 jQuery DataTable 设置绑定(bind)在 Chrome 中包含 1,000 行:

 Binding the click event to cells took 0.14627581768183972 milliseconds.

Binding the click event to the table took 0.04619236347855349 milliseconds.

最佳答案

你可以在选择器中放置一个逗号:

 $('#my-table').on('click', 'tbody td:not(:nth-child(4), :first-child)', function (e) {
alert("I've been clicked on!");
});

关于javascript - 使用 jQuery,如何让单击事件处理程序响应选定的表列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31770792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com