我希望有人能帮助我,我认为它必须是直截了当的,但我想我遗漏了一些东西......我制作了一个表格,如果单击同一个单元格,它将突出显示 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
}
});
或者查看在输入时停止事件并使用 cancelBubble
或 event.stopPropogation
选择点击处理程序
关于javascript - 在实时点击时切换突出显示 tr/td,但如果点击输入/选择则不切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7887087/