单击元素或其子元素时如何获取元素的数据属性

zyn*_*nkn 7 html javascript onclick custom-data-attribute

我正在做一张桌子

document.querySelector('table').addEventListener('click', (e) => {
  console.log(e.target);
  console.log(e.target.dataset.item);
})
Run Code Online (Sandbox Code Playgroud)
td {
  padding: 8px;
  border: 1px solid black;
  background-color: blue;
}

span {
  background-color: red;
  padding: 4px;
}
Run Code Online (Sandbox Code Playgroud)
<table>
  <tr>
    <td data-item="item1"><span>1</span></td>
    <td data-item="item2"><span>2</span></td>
    <td data-item="item3"><span>3</span></td>
    <td data-item="item4"><span>4</span></td>
    <td data-item="item5"><span>5</span></td>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

当我点击蓝色部分时,我可以获得data-item属性。但是当我点击红色部分时,我不能。

我想修复它,如果我点击<span/><td/>我想从中获取data-item属性<td />

Ram*_*ran 8

尝试使用closest您的子标签而不是dataset.

document.querySelector('table').addEventListener('click', (e) => {
  console.log(e.target.closest("td").dataset.item);
})
Run Code Online (Sandbox Code Playgroud)
td {
  padding: 8px;
  border: 1px solid black;
  background-color: blue;
}

span {
  background-color: red;
  padding: 4px;
}
Run Code Online (Sandbox Code Playgroud)
<table>
  <tr>
    <td data-item="item1"><span>1</span></td>
    <td data-item="item2"><span>2</span></td>
    <td data-item="item3"><span>3</span></td>
    <td data-item="item4"><span>4</span></td>
    <td data-item="item5"><span>5</span></td>
  </tr>
</table>
Run Code Online (Sandbox Code Playgroud)