2013-08-26 41 views
6

如何使用jQuery選擇所有空標籤。如何使用jQuery選擇所有空標籤?

我想選擇

<p></p> 
<p style="display: block"></p> 
<p> </p> 
<p>  </p> 
<p>&nbsp;</p> 

,而不是

<p>0</p> 
<p>Test</p> 

我試着用:empty但它不是我的選擇工作。任何幫助,這是非常感謝。

+0

你可以用':empty'發佈你的例子嗎? – Botis

+0

他們實際上不是空的。有空格 – Rab

+0

@Ravi:我的道歉,我無意中發佈了兩次。接下來我應該做什麼? – laradev

回答

7

您可以使用jQuery.filter()來做到這一點。

var empty_p = $('p').filter(function(){ 
    return !$.trim($(this).text()); 
}).get(); 
+0

這個返回元素是否只包含空格? – doppelgreener

+0

@JonathanHobbs對不起,我沒有測試它......現在編輯答案與測試代碼。 –

2

使用jQuery filter

$('p').filter(function() { 
    return !$(this).text().trim(); 
}); 
+0

這不是你如何使用['trim()'](http://api.jquery.com/jQuery.trim/) –

+1

@koala_dev這不是一個jQuery trim。 [String.trim()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim) –

+0

糟糕,對不起,因爲混淆 –

1
$(document).ready(function(){ 
    $("p").each(function(index){ 
     var html = $(this).html(); 
     html = filter(html, " "); 
     html = filter(html, "&nbsp;"); 

     if ($(this).html() == ""){ 
      //YOUR CODE 
     } 
    }); 
}); 

function filter(string, char){ 
    while(string.indexOf(char) > 0){ 
     string.replace(char, ""); 
    } 
} 

JS FIDDLE

+0

將失敗的空白和' ' –

+1

啊,總是有助於閱讀我想我已經做了一些改變的問題。 – Seano666

-1

另一種方式來做到這一點,使用正則表達式,而不是trim()

$('p').filter(function() { 
    return !/\S/.test($(this).text()); 
}) 

JSFiddle

注意,這(和所有其他解決方案基於$(this).text())也將匹配例如這一段:

<p><a href="http://example.com">&nbsp;</a></p> 

甚至:

<p><img src="http://example.com/image.gif"></p> 

取決於你想要的段落做什麼,這可能是也可能不是你想要的。如果不是,你會需要更復雜一點的東西;細節將取決於你想要考慮的「空白」段落。

相關問題