javascript - 使用 JavaScript 获取 DOM 元素的父级
问题描述
我想检查 DOM 元素是否是特定 DIV 类的子元素,而不管元素与父 DIV 之间的 DIV/HTML 数量如何。我需要使用 JavaScript(不是 jQuery)。因此,如果我有一些这样的 HTML:
<div class="header grid-12">
<!-- many levels of divs/html -->
<div class="section">
<span id="id1">hello</span>
</div>
</div>
<div class="footer">
<!-- many levels of divs/html -->
<span id="id2">goodbye</span>
</div>
我想做这样的事情(逻辑上是这样):
var domID = document.getElementById("id1");
if (domID a child of 'header grid-12') {
console.log('header grid-12 found');
}
我查看了允许您获取所有子节点的 parentNode 子节点,但我需要反向循环(如果您愿意,则为父节点父节点)。我认为从孩子开始并上升要快得多,而不是从“header grid-12”开始并循环通过数百/数千个节点。
谢谢
解决方案
该
Element.closest()
方法返回与参数中给出的选择器匹配的当前元素(或当前元素本身)的最近祖先。如果没有这样的祖先,则返回 null。
尝试这个,
let parent = !!document.getElementById('id1').closest('.header.grid-12');
if(parent)
{
console.log('parent found');
}
domElement.closest('selector')
反过来并返回最近的匹配父元素。这将使您免于遍历所有domChildElements
.
推荐阅读
- android - 为什么即使应用程序调用了 onDestroy(),Toast 仍然显示?
- angular - 当组件来自不同的模块时,NgRx Store 不会获取值 - Angular
- python - 无法运行 jupyter notebook //NotImplementedError
- react-native - 当我在 TextInput 中获得焦点时单击其他元素
- javascript - 如何避免flex项目在折叠时具有相同的高度
- node.js - 如何从 PortAudio 开始获取准确的录音时间戳?
- android - 使用 ROOM Dao - 如何通过将当前日期与表中存储的日期进行比较来获取表的数据?
- asp.net-core - 通过 QueueClient 检查服务总线运行状况的正确方法是什么?
- wix - 使用 VS2019 和 WiX 创建 VSTO MSI 安装
- python - 如何修复“RuntimeError: `get_session` 在使用 TensorFlow 2.0 时不可用。”