javascript - 选择元素父级的父级

标签 javascript html css

我想在 Javascript 中选择子对象的父对象的父对象,而无需将相同的方法链接两次:child.parentElement.parentElement。有这样的方法吗?我要选择的元素是 parent1

代码只是为了说明问题,但我只想知道是否有一种方法可以替代 .parentElement.parentElement。我需要这样选择它,因为我的代码是动态引入到页面中的。

这是说明问题的代码:

const body = document.querySelector('body');

body.querySelector('button').addEventListener('click', function() {
  this.parentElement.parentElement.classList.toggle('black');
});
.parent1 {
  background: yellow;
  padding: 20px;
}

.parent2 {
 background: blue;
 padding: 20px;
}

.black {
 background: black;
}
<div class="parent1">
  <div class="parent2">
    <button>Click</button>
  </div>
</div>

最佳答案

您可以使用Element.closest()查找与选择器匹配的第一个父元素,在我们的例子中为 .parent1:

const body = document.querySelector('body');

body.querySelector('button').addEventListener('click', function() {
  this.closest('.parent1').classList.toggle('black');
});
.parent1 {
  background: yellow;
  padding: 20px;
}

.parent2 {
 background: blue;
 padding: 20px;
}

.black {
 background: black;
}
<div class="parent1">
  <div class="parent2">
    <button>Click</button>
  </div>
</div>

关于javascript - 选择元素父级的父级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68873996/

相关文章:

javascript - Parsley.js - 对组的理解和错误

javascript - react native 圆变换翻译动画

javascript - JavaScript 中 window.setTimeout 或 window.setInterval 调用的函数列表?

asp.net - 如何在 asp.net 网页中实现 html 表单 - asp.net 中的两种表单问题

javascript - CSS动画和Jquery2

html - 由 UL 元素创建的巨大边距阻挡了其他 div

html - CSS - 使用字符作为列表标记

Javascript Canvas - 检查是否单击矩形

javascript - 如何将 div 文本放置在形状旁边

php - Wordpress 中的初始页面