2010-01-28 54 views
2
<div> 
    <p><a href="#">link</a> some text</p> 
    <p><a href="#">link</a></p> 
    <p><a href="#">link</a> some text</p> 
    <p><a href="#">link</a></p> 
</div> 

我想找到(addClass到)不包含文本,直接在自身或其子女<p>標籤。查找(jQuery的)

+0

您所描述的選擇器不會選擇上述任何段落,這是否正確? – Lazarus 2010-01-28 12:39:40

+0

它會選擇僅包含鏈接的鏈接,而不包含包含「某些文本」的鏈接 – 3zzy 2010-01-28 12:42:09

+3

但是,孩子們包含文本,並且您明確指出「不包含文本的標籤,直接位於其本身或其子級內部」。 – Lazarus 2010-01-28 12:45:16

回答

4

這工作得很好,我也得空文本你的段落之一進行測試:

var $eles = $('p').filter(function() { 
    return $(this).text().length == 0; 
}); 
$eles.addClass("foo"); 
+0

工作得很好,非常感謝! :) – 3zzy 2010-01-28 13:20:37

0

我想你有問題描述錯誤,作爲一個標籤總是包含了文本這個例子。

據我所知是沒有標準的選擇允許以檢查是否存在直接的內容,但你可以試試這個:

$('p').each(function(){ 
var p = $(this).clone(); 
p.children().remove(); 
if(p.text().length){ 
    $(this).addClass('gotcha'); 
    } 
}); 

如果你希望只檢查段落內部應該工作。