Pergunta

<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>

Eu quero encontrar (e addclass para) o <p> Tags que não contêm texto, diretamente dentro de si ou de seus filhos.

Foi útil?

Solução

Isso funciona bem, eu tive que esvaziar o texto de um de seus parágrafos para testar:

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

Outras dicas

Suponho que você tenha um erro na descrição do problema, pois a tag A sempre contém texto no exemplo.

Até onde eu sei, não há seletor padrão, permitindo verificar se há um conteúdo direto, mas você pode tentar o seguinte:

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

Deve funcionar se você deseja verificar apenas o interior do parágrafo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top