Trova se l'elemento contiene x ma non y (jQuery)
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.
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