按类或名称获取嵌套子项的父元素

Sys*_*ter 5 html javascript

我有如下 html 元素,其层次结构未知

<div class="parent" name="parent">
  <div>
    <div>
      <div>
        <div onclick="get_parent(this)">
          Nested Child 1
        </div>
      </div>
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)
<div class="parent" name="parent">
  <div>
    <div onclick="get_parent(this)">
      Nested Child 2
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

有没有简单的方法可以按类或名称获取嵌套子项的父项?

也许有一些替代方案,child.parentElement或者child.parentNode我不知道哪个可以帮助我?

或者循环遍历所有父母直到我被需要class或者name是唯一可能的选择?

小智 10

我认为closest是最好的解决方案。

function get_parent(elem) {
/*** For Class ***/
 // var x = elem.closest(".parent").className;
 /*** For Name ***/
   var x = elem.closest(".parent").attributes["name"].value;
  document.getElementById("demo").innerHTML = x;
}
Run Code Online (Sandbox Code Playgroud)
<div class="parent" name="parent1">
<div>
  <div>
    <div>
      <div onclick="get_parent(this)">
        Nested Child 1
      </div>
    </div>
  </div>
</div>
</div>
<div class="parent" name="parent2">
  <div>
    <div onclick="get_parent(this)">
      Nested Child 2
    </div>
  </div>
</div>

<p id="demo"></p>
Run Code Online (Sandbox Code Playgroud)


小智 0

你应该循环“parent()”函数jquery。

function get_parent(a){
  $(a).parent().parent();
  console.log("test",$(a).parent().parent());
}
Run Code Online (Sandbox Code Playgroud)
<div class="parent" name="parent">
  <div>
    <div onclick="get_parent(this)">
      Nested Child 2
    </div>
  </div>
</div>
<script
        src="https://code.jquery.com/jquery-3.4.1.min.js"
        integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
        crossorigin="anonymous"></script>
Run Code Online (Sandbox Code Playgroud)