我将此答案标记为angularjs,因为我使用的是角度,但也许这是一个通用的JavaScript问题。
我有一个表,可以通过单击每一行来选择哪些行。每行的每个单元格都包含交互式元素,如链接,按钮和输入字段。问题是,当我单击行中包含的任何元素时,click事件会冒泡并到达行单击侦听器,然后该行被选中。
我目前的解决方法是检查触发事件的元素名称,如果不是行,则忽略它。
var target = e.target || e.currentTarget;
if (/button|input|^a$|select/i.test(target.nodeName) || /glyphicon/i.test(target.className)) {
// Only reacth if the click does not comes from a button or an input
console.log(e)
return
}
我正在安装事件监听器的方式是使用ng-click="switchSelected($index,$event)"
应该有一个更好的方法。我不知道是否可以将它限制为被点击的元素,但我也不希望这样,因为如果他们点击一个空白空间,我希望该行被选中。
此致