【发布时间】:2020-08-16 23:18:23
【问题描述】:
我有如下的 html 格式。我正在尝试获取 Div where attribute foo = 'bar' ,但前提是该 div 有一个带有特定文本的子级。
var loop = document.querySelectorAll('[foo="bar"]');
for(var i = 0; i <= loop.length; i++)
//perform action
<div foo='bar'>
<div>
<span>
<span> foobar </span>
</span>
</div>
</div>
<div foo='bar'>
<div>
<span>
<span> barfoo </span>
</span>
</div>
</div>
<div foo='bar'>
<div>
<span>
<span> foobar </span>
</span>
</div>
</div>
在上面的示例 html 中,我想获取 foo=bar 的第一个和第三个 div 并忽略第二个,因为它没有带有 foobar 文本的子跨度。
我上面的 javascript 将获取所有 3 个,但是在我的循环中,如何在执行操作之前检查子跨度文本是否与 foobar 匹配?
谢谢
【问题讨论】:
-
可以做到,但会导致糟糕的性能。
-
目前没有构建选择器可以执行此操作,他们正在考虑使用
:contains选择器,但它不存在(还没有?)。 Selectors Level 3: 6.6.6. Blank。因此,您需要自己使用例如对找到的元素进行过滤。 MDN: Node.innerText
标签: javascript