Encuentre si el elemento contiene x pero no y (jQuery)
Pregunta
<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>
Quiero encontrar (y agregar clases a) el <p>
Etiquetas que no contienen texto, directamente dentro de sí mismo o sus hijos.
Solución
Esto funciona bien, tuve que vaciar el texto de uno de sus párrafos para probar:
var $eles = $('p').filter(function() {
return $(this).text().length == 0;
});
$eles.addClass("foo");
Otros consejos
Supongo que tiene un error en la descripción del problema, ya que una etiqueta siempre contiene texto en el ejemplo.
Hasta donde sé, no hay un selector estándar que permita verificar si hay un contenido directo, pero puede probar esto:
$('p').each(function(){
var p = $(this).clone();
p.children().remove();
if(p.text().length){
$(this).addClass('gotcha');
}
});
Debería funcionar si desea verificar solo el interior del párrafo.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow