如何获得深子的父母元素?

时间:2020-05-22 12:53:47

标签: javascript html

我有一个类似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来获取其grand父元素。
我知道访问e.parentElement.parentElement.parentElement.parentElement之类的基本解决方案,但这不好,因为所单击的项目可能比示例中给出的内容更深层次。
通过使用Javascript,他们还有其他解决方案吗?

2 个答案:

答案 0 :(得分:0)

您可以执行e.target.closest('.parent'),以便您使用所需的选择器选择最接近的父级。

答案 1 :(得分:0)

您可以使用mouseEvent.target.closest('.parent');来获取clicked元素中最接近的.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>