如果元素包含类中的特定div,如何隐藏元素

时间:2019-03-05 04:20:25

标签: html css

我有这个html结构:

<div>
<div class="parent">
<div>
  <div class="label">
    <div class="xyz"></div>
  </div>
</div>
</div>
<div class="parent">
<div>
  <div class="label">
  </div>
</div>
</div>
</div>

如果父级包含class="xyz"的div,我想隐藏它 我尝试过:

.parent div.xyz {
  display: none;
}

但似乎我的选择器不起作用。

3 个答案:

答案 0 :(得分:0)

在CSS中,没有父元素选择器。在您的情况下,可以使用jquery实现解决方案。

$('.parent:has(.xyz)').addClass('hide');

.hide {
  visibility: hidden;
}

答案 1 :(得分:0)

div.xyz .parent {
  display: none;
}
<div>
  <div class="xyz">
    <div class="parent">
      <div>
        <div class="label">
          <div class="xyz"></div>
        </div>
      </div>
    </div>
  </div>

  <div class="parent">
  <div>
    <div class="label">
    </div>
  </div>
  </div>
</div>

您不能选择祖先,只能选择后代,例如:

<div class="xyz">
<div class="parent">
  <div class="label">
    <div class="xyz"></div>
  </div>
</div>
<div class="parent">
  <div class="label">
  </div>
</div>
</div>

div.xyz .parent {
  display: none;
}

在这种情况下,您将同时隐藏两个.parent

See more about descending selector

要在另一个包装器中选择父项或元素,您将需要使用javascript

答案 2 :(得分:0)

您可以使用以下jquery隐藏父元素

jQuery('.parent').each(function(){
    if (jQuery(this).find('div.xyz').length != 0) {
        jQuery(this).closest('.parent').hide();
    }
});

希望这会有所帮助。