如何使用jquery删除ul列表中的空li?

时间:2012-01-09 10:05:51

标签: javascript jquery

我有以下HTML结构:

<ul>
    <li><a>one</a></li>
    <li><a>two</a></li>
    <li></li>
    <li><a>three</a></li>
    <li><a>four</a></li>
    <li></li>
    <li><a>five</a></li>
</ul>

我需要删除没有任何内容的li元素(<li></li>)。

我如何在jQuery中执行此操作?

8 个答案:

答案 0 :(得分:7)

只使用jQuery选择器

$("ul li:empty").remove();

http://jsfiddle.net/acS9A/

答案 1 :(得分:3)

$('li').each(function(){
if($(this).html() == "" || typeof($(this).html())=="undefined")
{
    $(this).remove
}
})

我建议你在比较之前修剪html,这样你就不会计算:

<li>
</li>

作为非空项目。 要修剪html,只需在.trim()之后添加.html(),即:

if($(this).html().trim() == "" || typeof($(this).html().trim())=="undefined")

答案 2 :(得分:2)

未经测试,请告诉我这是否对您不起作用。

$('li').each(function() {
    var li = $(this);
    if (li.html() == '') {
      li.remove();
    }
});

答案 3 :(得分:2)

应该可以使用empty选择器:

$('li:empty').remove();

http://jsfiddle.net/infernalbadger/4yf2t/

答案 4 :(得分:1)

  $('li').each(
         function(){
             if($(this).html().trim()==''){$(this).remove();}
         }
  );

答案 5 :(得分:1)

您可以使用filter方法运行自定义函数来查找要删除的元素:

$('ul li').filter(function(){ return $(this).text() == '' }).remove();

答案 6 :(得分:1)

尝试以下方法:

$('li').filter(function() { return !$(this).html(); }).remove();

答案 7 :(得分:1)


$('ul li:empty').remove();
//OR
$('ul li').filter(function() {return $(this).text()​​​​​​​ == '';}).remove();​