jquery:空但忽略文本节点

时间:2009-04-22 09:49:21

标签: jquery

说我的标记是:

<ul>
    <li id="num1">hello</li>
    <li id="num2"><p>hello</p></li>
    <li id="num3">sdf dfg</li>
    <li id="num4"></li>
    <li id="num5"><a>linky</a></li>
</ul>

如何查询ul以返回#num1, #num3 and #num4(没有子标记的那些)?

类似的东西:

$('ul').children('li:empty')

然而来自文档:

:empty  Returns: Array<Element(s)>
Matches all elements that have no children (including text nodes).

因为它包含文字,上述查询只返回#num4

我应该/我可以做什么?

编辑:我也在使用jQuery 1.1.4(不要问)

由于

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

你可以试试这个:

$('ul').children().filter(function()
{
    return $(this).children().length != 0;
});

基本上,该函数检查直接子项的数量是否为零。它可能不是最优雅的解决方案,但至少它会起作用。