jQuery v1.11
给定一个包含 6 列的 HTML 表格,我希望表格中第二、三、五和六列的单元格响应click事件。因此,如果用户单击第一列或第四列中的单元格,则click不应调用事件处理程序。
这可以防止在用户单击第一列时调用事件处理程序:
$('#my-table').on('click', 'tbody td:not(:first-child)', function (e) {
alert("I've been clicked on!");
});
Run Code Online (Sandbox Code Playgroud)
当用户在第 4 列中单击时,他可以防止调用事件处理程序:
$('#my-table').on('click', 'tbody td:not(:nth-child(4))', function (e) {
alert("I've been clicked on!");
});
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何修改上述内容,以便在第一列或第四列中发生单击时不调用事件处理程序。
编辑: @micnil 回答了我的具体问题,我会发现了解他建议的模式很有用。但是,@Oleg 花时间指出了更好的方法。他建议我应该将事件处理程序绑定到表格,而不是将事件处理程序绑定到每个单元格。在我的情况下,这证明更好。
使用performance.now(),在这里讨论,我得到下面的结果建立一个绑定的jQuery的DataTable包含在Chrome 1000行:
Binding the click event to cells took 0.14627581768183972 milliseconds.
Binding the click event to the table took 0.04619236347855349 milliseconds.
Run Code Online (Sandbox Code Playgroud)
您可以在选择器中放置一个昏迷:
$('#my-table').on('click', 'tbody td:not(:nth-child(4), :first-child)', function (e) {
alert("I've been clicked on!");
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2449 次 |
| 最近记录: |