jQuery循环ul li

时间:2010-08-23 16:39:52

标签: jquery xhtml

这有什么问题? 我试图隐藏所有空的李。

    $(document).ready(function() {
        $("#details li").each(function() {
            if ($(this).length == 0) {
                $(this).css({ display: "none" }); ;
            }
        });
    });

标记:

<ul id="details">
 <li>Lorem Ipsum</li>
 <li>Lorem Ipsum</li>
 <li>Lorem Ipsum</li>
 <li>Lorem Ipsum</li>
 <li></li>
 <li></li>
 <li>Lorem Ipsum</li>
 <li>Lorem Ipsum</li>
 <li>Lorem Ipsum</li>
</ul>

提前谢谢

3 个答案:

答案 0 :(得分:6)

我认为你想要的是.text()长度,如下所示:

$(function() {
  $("#details li").each(function() {
    if ($(this).text().length == 0) {
      $(this).css({ display: "none" }); ;
    }
  });
});

或者更短一些:

$("#details li").filter(function() {
  return $(this).text().length == 0;
}).hide();

或者稍微不同的支票适用于您的目的,由@ Rafael提供:

$("#details li:empty").hide();

答案 1 :(得分:4)

尝试使用:

if ($(this).is(':empty')) {}

此外,您应该能够将上述代码重写为:

$("#details li:empty").each(function() {
  $(this).css({ display: "none" });
});

甚至:

$("#details li:empty").hide();

答案 2 :(得分:0)

表达式$(this).length不可能为零。