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