假设我有这样的层次结构:
<div class="first_level">
<div class="second_level_1">
<div class="third_level_1">
<div class="fourth_level_1">
<ul><li></li><li></li></ul>
</div>
<div class="fourth_level_2">
<div class="fifth_level_1">
</div>
<div class="fifth_level_2">
<ul><li></li><li></li></ul>
</div>
</div>
</div>
</div>
<div class="second_level_2">
<ul><li></li><li></li></ul>
</div>
</div>
我想选择所有这些div,其中至少包含一个ul
。所以在上面的示例代码中,这将是div second_level_2
,fourth_level_1
和fifth_level_2
..
我可以使用什么CSS选择器来获得此结果?
修改
如果单独使用CSS是不可能的,你可以使用JavaScript建议答案,虽然由于我的实际代码的性质,我会真的喜欢在可能的情况下避免这样做..
答案 0 :(得分:2)
这里有两个选项 - 两个都有缺点,但你可以考虑它们:
您可以使用ul
:
<div class="fourth_level_1 div_with_ul_class">
注意:如果您在服务器上使用某种动态语言,例如PHP,这实际上可以非常轻松地实现,无需手动编码。
或者如果你想成为动态我推荐jQuery:
$("div > ul").parent().addClass("div_with_ul_class");
答案 1 :(得分:1)
尽管有很多要求添加它,但CSS中没有父选择器。
jQuery有一个很好的选择器,知道为:has
; http://api.jquery.com/has-selector/
$('div:has(ul)');
将是jQuery选择器。