gpt4 book ai didi

javascript - 我可以使用 Element.closest() 在 JavaScript 中检查多个祖先吗?

转载 作者:行者123 更新时间:2023-11-30 11:22:03 24 4
gpt4 key购买 nike

我有一个详细的条件:

if (
(e.target.parentNode.classList[0] === 'my-class') ||
(e.target.parentNode.parentNode.classList[0] === 'my-class') ||
(e.target.parentNode.parentNode.parentNode.classList[0] === 'my-class')
) {

/* [... CODE HERE...] */

}

在某些情况下,我可以很容易地想象到扩展到 5 行或更多行的情况。

我知道我可以编写一个递归函数来检查下一个更高的祖先节点是否不是 <body>如果不是,则在该节点上运行相同的递归函数。

但考虑到 Element.closest()存在:

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

有没有更简单的方法来编写条件,大致如下:

if (e.target.closest('.my-class') !== false) {

/* [... CODE HERE...] */

}

最佳答案

摘自总结:

If there isn't such an ancestor, it returns null.

所以:

if (e.target.closest('.my-class') !== null)

如果 e.target 本身可能是一个 .my-class,而您想排除它,则需要从元素的父元素开始:

if (e.target.parentNode.closest('.my-class') !== null)

但是如果保证 e.target 永远不会成为 .my-class,那么第一个示例就足够了。

关于javascript - 我可以使用 Element.closest() 在 JavaScript 中检查多个祖先吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49474956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com