2011-09-14 136 views
0

假设以下HTML如何找到所有不包含任何lis的uls? IE:在这种情况下ul3和ul4?包含NO LI的jQuery选择器UL

我可以看到,jQuery有“有”选择器,但我不能看到它的逆?我也不了解我如何结合,而不是完成我所需要的。

<div id="div1"> 
    <ul id='ul1'> 
     <li> 
     </li> 
    </ul> 

    <ul id='ul2'> 
     <li> 
     </li> 
    </ul> 

    <ul id='ul3'> 
    </ul> 

    <ul id='ul4'> 
    </ul> 
</div> 
+0

为什么你有没有项目的清单? – v42

回答

2

我也不明白,我怎么可以结合已经不完成我需要什么。

据我所知,这是简单的:

$('ul:not(:has(li))') 
+0

这对我来说测试OK ... http://jsfiddle.net/mS2tC/我的行不通。 –

+0

:)我在jQuery文档页面上测试了它:没有。但是,**每个**'ul'在该页面上都有一个'li',所以当然,我也尝试过使用'p'和'strong'。你的版本的问题是'contains'在这里不合适,'has'是; 'contains'在'ul'的文本后代中查找文本字符串,而不是子标签。 –

+0

这似乎对我的问题很好。谢谢。 –

1

使用:empty选择(如果你确定没有文本节点后代太)。

$('ul:empty'); 

否则,您可以使用...

$('ul').filter(function() { return ! $(this).find('li').length; });