单击时选择 parent 容器 ID

Selecting parent container id on Click

我想知道是否可以在单击整个 div 的任意位置时始终 select parent 的 ID?

我做了一个示例,给每个 child div 一个不同的 id 和 console.logging 哪个元素 id 被 selected 取决于哪个部分您点击的整个 div。

如上所述,我只想能够始终 select parent div 的 Id,在本例中无论哪一部分都是“1”整个div我点击.

function App() {
  function onClick(e) {
    console.log(e.target.id);
  }

  return (
    <div id="1" className="container" onClick={onClick}>
      Decor
      <div id="2" className="img-container">
        <img
          id="3"
          src="https://images.pexels.com/photos/7828323/pexels-photo-7828323.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500"
          className="img"
          alt=""
        />
      </div>
      <p id="4">Lorem ipsum</p>
    </div>
  );
}

ReactDOM.render(
  <App />,
  document.getElementById("root")
);
body {
  font-family: sans-serif;
  text-align: center;
  display: flex;
  justify-content: center;
}

.container {
  height: 300px;
  width: 200px;
  border: solid green;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.img-container {
  width: 200px;
  height: 200px;
}

img {
  width: 100%;
  height: 100%;
}
<script crossorigin src="https://unpkg.com/react@17/umd/react.production.min.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@17/umd/react-dom.production.min.js"></script>

<div id="root"></div>

使用“容器”搜索 closest 祖先 class。

function Example() {

  function onClick(e) {
    const { id } = e.target.closest('.container');
    console.log(id);
  }

  return (
    <div id="1" className="container" onClick={onClick}>
      Decor
      <div id="2" className="img-container">
        <img
          id="3"
          src="https://images.pexels.com/photos/7828323/pexels-photo-7828323.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500"
          className="img"
          alt=""
        />
      </div>
      <p id="4">Lorem ipsum</p>
    </div>
  );
}

ReactDOM.render(
  <Example />,
  document.getElementById("react")
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.2/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.2/umd/react-dom.production.min.js"></script>
<div id="react"></div>