2010-01-28 3 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

+0

Он будет выбирать те, у которых есть ссылка, и НЕ те, которые содержат «некоторый текст» – 3zzy

+3

Но дети содержат текст, и вы явно указали «теги, которые НЕ содержат текст, непосредственно внутри себя или его детей». – Lazarus

ответ

4

Это прекрасно работает, я должен очистить текст из одного из ваших параграфов теста:

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

отлично поработал, огромное спасибо! :) – 3zzy

0

Я полагаю, Вы имеете ошибку в описании проблемы, так как тег всегда содержит текст пример.

Насколько я знаю, нет никакого стандартного селектора позволяет проверить, если есть прямое содержание, но Вы можете попробовать это:

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

Должен работать, если Вы хотите проверить только пункт внутренности.