【问题标题】:How to get parent element of a deep child? [duplicate]如何获得深孩子的父元素? [复制]
【发布时间】:2020-09-09 07:46:36
【问题描述】:

我有一个类似的 HTML -

<main>
<section>
  <div class="parent">
    <div class='level_1'>
      <div class='level_2'>
        <div class='level_3'>
          <span class='click_here'></span>
        </div><!--level 3-->
      </div><!--level 2-->
    </div> <!--level 1-->
  </div> <!--parent-->
<section>

<section>
  <!-- same as given above -->
<section>
<main>

看到有一个类click_here 的span 元素。因此,如果用户单击此 span 元素,我想通过 Javascript 获取其具有 parent 类的祖父元素。
我知道访问e.parentElement.parentElement.parentElement.parentElement 之类的基本解决方案,但这并不好,因为单击的项目可能比示例中给出的级别更深。
他们还有其他使用 Javascript 的解决方案吗?

【问题讨论】:

标签: javascript html


【解决方案1】:

您可以使用mouseEvent.target.closest('.parent'); 来获取单击元素的最近的.parent 元素,这适用于任意嵌套级别。示例:

let span = document.querySelector('span');

span.addEventListener('click', function(e) {
	console.log(e.target.closest('.parent'));
});
span {
	display: block;
	width: 100px;
	height: 100px;
	background: tomato;
}
<main>
<section>
  <div class="parent">
    <div class='level_1'>
      <div class='level_2'>
        <div class='level_3'>
          <span class='click_here'></span>
        </div><!--level 3-->
      </div><!--level 2-->
    </div> <!--level 1-->
  </div> <!--parent-->
<section>

<section>
  <!-- same as given above -->
<section>
<main>

【讨论】:

    【解决方案2】:

    您可以使用e.target.closest('.parent'),它可以让您使用您正在寻找的任何选择器选择最近的父级。

    【讨论】:

      猜你喜欢
      • 2012-05-16
      • 2019-10-14
      • 1970-01-01
      • 2023-04-03
      • 2018-04-28
      • 1970-01-01
      • 1970-01-01
      • 2013-06-13
      • 1970-01-01
      相关资源
      最近更新 更多