我有一个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
答案 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/