包含至少一个UL的选​​择DIV的CSS选择器(或JavaScript,如果需要)

时间:2013-09-22 18:55:03

标签: html css css-selectors

假设我有这样的层次结构:

<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_2fourth_level_1fifth_level_2 ..

我可以使用什么CSS选择器来获得此结果?

修改

如果单独使用CSS是不可能的,你可以使用JavaScript建议答案,虽然由于我的实际代码的性质,我会真的喜欢在可能的情况下避免这样做..

jsfiddle

2 个答案:

答案 0 :(得分:2)

这里有两个选项 - 两个都有缺点,但你可以考虑它们:

您可以使用ul

手动将第二个类添加到div
<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选择器。