Javascript 表格行(<;tr>;)可以';当表数据指针事件停用时,t接收指针事件

Javascript 表格行(<;tr>;)可以';当表数据指针事件停用时,t接收指针事件,javascript,html,css,Javascript,Html,Css,我有一个带有表数据的简单表,希望表行可以单击,并在单击时执行一些操作 在没有任何css的情况下,元素是事件目标,但我只想将表行作为事件目标,因此我所做的如下: td { pointer-events: none; } tr { cursor: pointer; } 当我使用div时,它起作用了,cotains跨越,但是tr和td不起作用,因为现在的表行不允许任何指针事件,即使我添加它们 有人知道这方面的解决方法吗?如上面所说 无 元素永远不是鼠标事件的目标;但是,如果子体的指针事件设

我有一个带有表数据的简单表,希望表行可以单击,并在单击时执行一些操作

在没有任何css的情况下,元素是事件目标,但我只想将表行作为事件目标,因此我所做的如下:

td {
  pointer-events: none;
}

tr {
  cursor: pointer;
}
当我使用div时,它起作用了,cotains跨越,但是tr和td不起作用,因为现在的表行不允许任何指针事件,即使我添加它们

有人知道这方面的解决方法吗?

如上面所说

元素永远不是鼠标事件的目标;但是,如果子体的指针事件设置为其他值,则鼠标事件可能以其子体元素为目标。在这些情况下,在事件捕获/气泡阶段,鼠标事件将在往返子代的途中触发此父元素上的事件侦听器(视情况而定)

因此,在
td
元素上禁用
指针事件
意味着单击
td
(而不是
tr
td
周围的边距)将不起作用

相反,只需在
tr
或甚至
tbody
表上钩住
点击
;例如:

document.querySelector(“表”).addEventListener(“单击”),函数(e){
//是点击表中的tr吗?
var tr=e.目标最近(“tr”);
if(tr&&this.contains(tr)){
//是,切换高光
tr.classList.toggle(“突出显示”);
}
});
。突出显示{
背景颜色:黄色;
}

一个
两个
三
一个
两个
三
一个
两个
三

“当我用div's制作cotains跨越……时,它起了作用”,这将是令人惊讶的。请更新您的问题,同时演示
tr
/
td
,理想情况下是使用堆栈片段(工具栏按钮
[]
)运行的问题。您的方法是有缺陷的。正确地使用事件委派可以解决您的问题。为什么目标是
td
s?如果您查看
tr
上的点击,当它们冒泡到
tr
时,您将看到点击。