Domanda

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

Voglio trovare (e addClass a) il <p> Tag che non contengono testo, direttamente dentro di sé o i suoi figli.

È stato utile?

Soluzione

Funziona bene, ho dovuto svuotare il testo da uno dei tuoi paragrafi per testare:

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

Altri suggerimenti

Suppongo che tu abbia un errore nella descrizione del problema, poiché un tag contiene sempre testo nell'esempio.

Per quanto ne so, non esiste un selettore standard che consente di verificare se esiste un contenuto diretto, ma potresti provare questo:

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

Dovresti funzionare se si desidera controllare solo l'interno del paragrafo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top