2011-05-23 20 views

Respuesta

61

La respuesta depende de lo " vacio "significa. Si los párrafos vacíos son <p></p>, entonces el selector p:empty de fireeyedboy es el camino a seguir. Si no puede haber espacios o saltos de línea u otras cosas, entonces es probable que desee algo como esto:

$('p').each(function() { 
    var $this = $(this); 
    if($this.html().replace(/\s|&nbsp;/g, '').length == 0) 
     $this.remove(); 
}); 

Ejemplo: http://jsfiddle.net/ambiguous/7L4WZ/

FCKEditor (no estoy seguro acerca de CKEditor o TinyMCE) le gusta añadir a la <p>&nbsp;</p> HTML para que pueda necesitar el enfoque algo feo anterior.

+0

Éste trabajó. Gracias. – Steve

+0

muchas gracias! – DextrousDave

37

Probar:

$('p:empty').remove();

+0

mejor y simple –

3

puede probar esta ...

$([selector]).is(":empty") 

se devolverá verdadero si el selector está vacío .. Working Demo

1

Llego un poco tarde a la fiesta, pero encontré este hilo recientemente ya que estaba buscando resolver este problema también.

me ocurrió con una solución de vainilla JS aquí, que trabajó para mí:

var p = document.querySelectorAll('p:empty'); 
for(var i = p.length - 1; i > -1; i--) { 
    p[i].parentNode.removeChild(p[i]); 
} 

Básicamente hace (exactamente) lo que sugiere fireeyedboy, pero sin jQuery.

También parece funcionar mejor que jQuery así: http://jsperf.com/remove-empty-elements-javascript-vs-jquery

Espero que esto ayude!

+1

querySelectorAll tiene el problema de no ser compatible con navegadores anteriores –

+0

Buen punto.Supongo que en ese caso, si eliges la ruta de vanilla con querySelector, puedes usar un Polyfill para agregar un soporte de navegador más antiguo. – ItsJonQ

0

Gracias "mu es demasiado corta",

que he probado su código Funciona, pero tengo que envolverlo en jQuery(document).ready(function() {});

El código completo que funcionó para mí es:

jQuery(document).ready(function() { 
    jQuery('p').each(function() { 
     var $this = jQuery(this); 
     if($this.html().replace(/\s|&nbsp;/g, '').length == 0) { 
      $this.remove(); 
     } 
    }); 
}); 

No sé por qué sucede esto, mi jQuery/JS no es tan bueno, lo estoy aprendiendo;).

Espero que esto ayude a otra persona como yo.

Gracias.

0
/* Remove empty paragraphs with &nbsp; */ 
jQuery('p').each(function(){ 
    if(jQuery(this).html() == '&nbsp;') 
     jQuery(this).remove(); 
}) 
Cuestiones relacionadas