Trouvez si l'élément contient x mais pas y (jQuery)
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.
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