javascript - querySelectorAll 包含 self

标签 javascript

<div class="a">
    <span class="a">a</span>
    <span class="a">b</span>
    <span class="a">c</span>
</div>

假设我有一个名为 divA 的变量,表示顶级 div 节点。 divA.querySelectorAll('.a') 将返回 3 个 span.a 的列表。我想知道是否有一种简单的方法可以返回包含 divA 本身在内的 4 个元素的列表?

我知道我可以从更高级别的节点开始,但我们假设可能还有其他我不想弄乱的 .a 元素。

实际上我仍然需要测试 divA 是否与我的选择器匹配。那么CSS选择器有没有办法测试元素本身呢?

我可以创建一个父节点并从那里运行 querySelectorAll。但如果有更简单的方法,我就不需要走那么远。

最佳答案

I still need to test whether divA matches my selector or not. Is there a way for css selector to test an element itself?

querySelector() 无法返回其运行所在的上下文元素。

您可以做的是使用 @Andreas 的解决方案,然后使用 filter()/matches() 组合。

[divA, ...divA.querySelectorAll('.a')].filter(el => el.matches('.a'));

关于javascript - querySelectorAll 包含 self,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59838866/

相关文章:

javascript - 如何在kendo网格列模板中调用模态窗口?

javascript - 使用 jqueryui 将图像拖放到 Canvas 上

javascript - 在 JS : Better way to say "if var1 is greater than var0 then assign var1 to var0"

javascript - 与服务器的连接不成功。(文件 :///android_asset/www/index. html)

javascript - 验证用 javaScript 编写的函数只运行一次?

javascript - 用户使用 angular6 单击后获取所有子对象 ID 的列表

javascript - 为什么javascript中的replace()会发生这种情况

javascript - jQuery 和 CSS 选择器

javascript - 不明白为什么我的 setInterval + jQuery 不起作用

javascript - 使用 JavaScript 只接受 1 到 9 的数字