javascript - 在实时点击时切换突出显示 tr/td,但如果点击输入/选择则不切换

标签 javascript jquery

我希望有人能帮助我,我认为它必须是直截了当的,但我想我遗漏了一些东西......我制作了一个表格,如果单击同一个单元格,它将突出显示 onclick 或取消突出显示。这个我没有问题。我遇到的问题是,如果我单击单元格中的输入:文本或选择元素,它仍然会切换。

有没有一种简单的方法可以在选择器中添加一个 not 子句,或者通过查看是否在下面单击了选择/输入?

$("#grid td, #grid th").live('click', function(){
    ...
    toggle highlight, image changes, link changes, etc,  when conditions are met (currently works)
    ...
});

我认为也许可以使用 .not() 函数,但我认为如果我仍然单击单元格而不是单击输入/选择,它可能不会切换。

任何帮助或协助都会很棒!

最佳答案

这里发生的是事件从子元素冒泡到父单元格。

你可以做两件事,一是检查哪个元素触发了事件,只有当它是 td 时才允许它。像这样:

$("#grid td, #grid th").live('click', function(e){
    if (e.target.tagName.toLowerCase() === 'td' || e.target.tagName.toLowerCase() === 'th') {
        //do your stuff here
    }

});

或者查看在输入时停止事件并使用 cancelBubbleevent.stopPropogation 选择点击处理程序

关于javascript - 在实时点击时切换突出显示 tr/td,但如果点击输入/选择则不切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7887087/

相关文章:

javascript - 在异步函数上调用 `bind()` 部分有效

jquery - 流程图 - 动态更改 y 轴

javascript - 当父项中的选择发生更改时,如何重置依赖子项的值?

javascript - 根据vue js中选定的复选框和隐藏/显示按钮显示/隐藏表格数据

javascript - 使用 ng-model 和 select 来显示数据属性而不是值?

javascript - 提交后刷新

jquery - Bootstrap 3 : How to detect current/default modal height

jquery - mCustomScrollBar "scrollTo, divID"不工作

JavaScript 手动重置事件

javascript - 如何切换列表中的元素单击?