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.

¿Fue útil?

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