Question

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

Je veux trouver (et addclass à) le <p> Des balises qui ne contiennent pas de texte, directement à l'intérieur d'elle-même ou de ses enfants.

Était-ce utile?

La solution

Cela fonctionne bien, j'ai dû vider le texte de l'un de vos paragraphes à tester:

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

Autres conseils

Je suppose que vous avez une erreur dans la description du problème, car la balise A contient toujours du texte dans l'exemple.

Pour autant que je sache, aucun sélecteur standard ne permet de vérifier s'il y a un contenu direct, mais vous pouvez essayer ceci:

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

Devrait fonctionner si vous souhaitez vérifier uniquement le paragraphe à l'intérieur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top