2012-01-09 38 views
2

我有以下HTML結構:如何使用jquery刪除ul列表中的空li?

<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中做到這一點?

回答

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

我會建議你在對比之前修剪HTML,這樣你就不會最終計數:

<li> 
</li> 

爲非空項目。 要修剪的HTML,只需經過.html()即添加.trim()

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

這是我會選擇過的方式,但你會介意解釋原因你添加了'typeof($(this).html())==「undefined」'? – JMax 2012-01-09 10:10:20

+2

防止IE可能出現的問題。 – 2012-01-09 10:14:07

2

未經檢驗的,所以讓我知道,如果它不爲你工作。

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

'html'方法是一種方法,而不是屬性。 – Guffa 2012-01-09 10:12:56

+0

@Guffa錯字修正 – PeeHaa 2012-01-09 10:14:58

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

可以使用filter方法來運行一個自定義函數找到的元素刪除:

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

嘗試以下操作:

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

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