Html CSS无同级选择器

Html CSS无同级选择器,html,css,css-selectors,Html,Css,Css Selectors,考虑以下html: <div> <div class="iwant" /> <div class="idontwant" /> </div> <div> <div class="iwant" /> </div> 我感兴趣的是一个选择器(用于抓取内容,因此我无法修改html),它可以选择所有iwant中没有类idontwant的同级选择器,以便按类匹配元素(或不匹配) 我能想到的最接

考虑以下html:

<div>
    <div class="iwant" />
    <div class="idontwant" />
</div>
 <div>
    <div class="iwant" />
</div>


我感兴趣的是一个选择器(用于抓取内容,因此我无法修改html),它可以选择所有
iwant
中没有类
idontwant

的同级选择器,以便按类匹配元素(或不匹配)

我能想到的最接近的选择器是

.iwant:only-child

但此选择器意味着,除了作为父级
div
的子级的
div class=“iwant”
之外,不存在任何其他元素,无论其类型或类别如何。根据HTML的结构,这可能满足您的需要,因此值得一试。如果类名对您来说是一个问题,那么可能没有太多的解决方案,因为没有
:CSS中只有一个类
伪类,它按类过滤并忽略其余部分。

没有负同级CSS选择器。使用同级选择器设置新样式,然后在
上重置样式。idontwant

div.iwant {
    /*Set CSS here*/
    display: inline;
}
div.iwant ~ div.idontwant {
    /*Reset CSS*/
    display: block /* Default of DIV is block*/
}

如果没有特定的兄弟项目,就没有很好的方法来定位项目。但是您可以使用
.iwant:last child
来针对没有后续同级的项目


示例:

这是多余的,因为每个类都是互斥的。@BoltClock这是什么意思?
div.iwant~div.idontwant
选择器比
div.iwant
更具体。我没有设置样式,我想为crawler获取这些元素,我更喜欢在一个查询中完成。这可能是一个解决方案,但我更喜欢更一般的选择,因为可能会有额外的
div
s。好主意。