jQuery, trouver si l'élément a n'importe quel texte
Je suis à traiter avec certains généré travées et je voudrais savoir qui d'entre eux ne contiennent pas de texte.
Le balisage est:
<span id="layer6">
<span class="drag col"> Some text</span>
<span class="drag col"> More text</span>
<span class="drag col"> </span>
<span class="drag col"> I also have text</span>
</span>
Je peux obtenir ceux qui ont "un texte" avec ce code, mais je ne peux pas obtenir vides:
if ($('#layer6 > span.col:contains("some text")').length > 0) {
alert ("I have text");
}
Comment obtenir les vides? Je pense en aide .la longueur de le faire, mais je n'ai pas réussi.
Vous devez vous connecter pour publier un commentaire.
http://jsfiddle.net/cfgr9/1/
Évidemment, au lieu d'ajouter une classe, vous pouvez faire comme vous le souhaitez, retourner l'objet etc
Mise à JOUR: suppression de l'étrange personnage caché après le point-virgule final qui a causé js erreur.
Utilisation
filter
pour filtrer les éléments qui n'ont pas de contenu textuel:je ne suis pas au courant d'une telle sélecteur, mais il est facile d'écrire
jQuery.expr[':'].vide = function(obj) {
retour jQuery(obj).texte().replace(/^\s+|\s+$/, "").longueur == 0;
}
et puis, par exemple
juste pour les googlers " bénéficier, voici la version étendue. $("node:correspond à(/regexp/)") sélectionne les noeuds dont le texte contenu fourni correspond regexp.
démo: