我怎样才能找到一个元素的祖先,它最接近于有一个特定类in pure JavaScript的树?例如,在这样一棵树上:

<div class="far ancestor">
    <div class="near ancestor">
        <p>Where am I?</p>
    </div>
</div>

如果我试着在p上搜索ancestor,我想要div.near.ancestor.

推荐答案

更新:现在支持in most major browsers

document.querySelector("p").closest(".near.ancestor")

请注意,这可以匹配 Select 器,而不仅仅是类

https://developer.mozilla.org/en-US/docs/Web/API/Element.closest


对于不支持closest()但有matches()的传统浏览器,可以构建类似于@rvighne的类匹配的 Select 器匹配:

function findAncestor (el, sel) {
    while ((el = el.parentElement) && !((el.matches || el.matchesSelector).call(el,sel)));
    return el;
}

Javascript相关问答推荐

jQuery提交按钮重新加载页面,即使在WordPress中使用preventDefault()

Spring boot JSON解析错误:意外字符错误

用JavaScript复制C#CRC 32生成器

我的服务工作器没有连接到我的Chrome扩展中的内容脚本.我该怎么解决这个问题?

构造HTML表单以使用表单数据创建对象数组

如何添加绘图条形图图例单击角形事件

阿波罗返回的数据错误,但在网络判断器中是正确的

在带有背景图像和圆形的div中添加长方体阴影时的重影线

使用LocaleCompare()进行排序时,首先使用大写字母

实现JS代码更改CSS元素

如何将react—flanet map添加到remixjs应用程序

还原器未正确更新状态

为什么我的导航条打开状态没有在窗口addeventlistener(Reaction Js)中更新?

变量的值在Reaction组件中的Try-Catch语句之外丢失

如何将数组用作复合函数参数?

如何 for each 输入动态设置输入变更值

是否可以将异步调用与useState(UnctionName)一起使用

有没有办法通过使用不同数组中的值进行排序

JavaScript -如何跳过某个字符(S)来打乱字符串中的字符

元素类型无效:应为字符串(对于内置组件)或类/函数(对于复合组件),但GET:Object.在Reaction项目中