javascript - 如何使鼠标事件将 TR 元素注册为目标

标签 javascript html css

我对表格有疑问。我想要的是将单击事件处理程序附加到表,然后将该事件的目标作为相应的 tr 元素。我对 td 元素使用了 pointer-events: none,但点击事件的目标是表格本身(加上我的 tr:hover风格不再有效)。如果我将 tr 元素更改为 display: block 鼠标事件会像我希望的那样工作,但现在 td 元素不会展开以填充整行...

有什么办法解决这个问题吗?

编辑:我应该提到我希望有一个 CSS 解决方案,而不是 JavaSctipt。

编辑:我在示例中使用了固定宽度,但在实际使用中,表格会自动调整为最小宽度。

Example 1 Example 2

最佳答案

由于您使用的是固定宽度的表格,因此您可以将 tr 元素显示为 block 并向您的 td 元素添加 width 规则。

--更新--

好的,因为您在这里没有使用固定宽度的表格,所以更新后的片段将 td 元素显示为 float 列表项。 这是一个例子。

var table = document.querySelector('table');
table.addEventListener('click', function(e) {
	alert(e.target.tagName)
});
table {
  min-width: 600px;
  background: white;
  border: solid 1px black;
  border-collapse: collapse;
}

tr {
  display: inline-block;
  width: 100%;
}

tr:hover {
  background: red;
}

td {
    box-sizing: border-box;
    display: list-item;
    text-align: center;
    pointer-events: none;
    width: 50%;
    float: left;
    list-style: none;
}
<table>
  <tr>
    <td><strong>Test</strong></td>
    <td>Test</td>
  </tr>
  <tr>
    <td>Test</td>
    <td>Test</td>
  </tr>
  <tr>
    <td>Test</td>
    <td>Test</td>
  </tr>
</table>

关于javascript - 如何使鼠标事件将 TR 元素注册为目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38331866/

相关文章:

javascript - 我可以在 Node.js 8 中使用 ES6 模块吗?

javascript - RefluxJS "single"商店?

javascript - jQuery grep 返回多维数组

asp.net - 透明div上页面中央的白色div

javascript - HTMLCanvasContext.drawImage() 在传递使用 jQuery 找到的图像时失败

javascript - Jquery click 不适用于动态生成的 id

javascript - 如何从 MP3 文件中获取振幅数据?

javascript - 我该如何修复此错误 : "Uncaught TypeError: Cannot set property ' borderBottom' of undefined at "MyClassName" "?

html - 计算图像屏幕占用百分比

html - 优先考虑div宽度