如果元素不包含具有某些css的元素

时间:2013-03-31 18:52:54

标签: jquery html css

我有一个jQuery脚本来隐藏元素,如果它不包含某个元素:

<script type="text/javascript"> 
$(document).ready(function(){
    $("div.main div p").not(":has(span)").css("display","none");
});
</script>

<div class="main">
    <div>
        <p>Hello <span>OK</span></p>
        <p>Hi</p>
    </div>
    <div>
        <p>Yo</p>
    </div>
</div>

此脚本会隐藏<p>Hi</p><p>Yo</p>文字。

如何检查div.main下的div是否包含<p><span>元素,或其他方式:如果div下的所有<p>元素都设置为{ {1}}?...并将这些div设置为display:none

因此HTML输出将是:

display:none

2 个答案:

答案 0 :(得分:0)

一种方法是遍历div并检查它们是否包含任何带有跨度的p元素。以下内容可行:

$("div.main div").each(function(){
  if($(this).find("p:has(span)").length == 0){
    $(this).hide();
  }
});

答案 1 :(得分:0)

我认为你可以更简单地做到这一点:

$("div.main div p:not(:has(span)), div.main div:not(:has(p>span))").hide();

jsFiddle演示:http://jsfiddle.net/pdBbU/1/