考虑以下 html:
<div>
<div class="iwant" />
<div class="idontwant" />
</div>
<div>
<div class="iwant" />
</div>
我对一个选择器(用于抓取内容,所以我不能修改 html)感兴趣,它会选择所有 iwant
与类 idontwant
没有兄弟姐妹。
原文由 Chris Hasiński 发布,翻译遵循 CC BY-SA 4.0 许可协议
考虑以下 html:
<div>
<div class="iwant" />
<div class="idontwant" />
</div>
<div>
<div class="iwant" />
</div>
我对一个选择器(用于抓取内容,所以我不能修改 html)感兴趣,它会选择所有 iwant
与类 idontwant
没有兄弟姐妹。
原文由 Chris Hasiński 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答899 阅读✓ 已解决
3 回答763 阅读✓ 已解决
4 回答1.2k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
2 回答868 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
如果有人仍然需要这个,我找到 了这个答案。基于它和 :not pseudo-class ,初始要求可以使用类似的东西来完成:
这种方法比一般的兄弟组合器有一个优势:它也向后匹配,意思是这样的:
(所以如果你有
.idontwant
元素第一个 -> 一般兄弟组合器将忽略的大小写)解释:
div:has(+ .idontwant)
将匹配任何与类div
有直接兄弟关系的idontwant
div:not(:has(+ .idontwant))
匹配任何div
与类idontwant
没有直接兄弟姐妹idontwant
的直接兄弟的 div 中搜索我们想要的类。选择器非常奇怪而且很大,但可以完成工作,而且我认为在某些(特定的)情况下非常需要。