2009-09-21 18 views
15

que tienen algún servidor de salida HTML lado no puedo lidiar con el uso de CSS puro, esencialmente el DIV veces se tiene:Cómo ocultar/eliminar un DIV cuando están vacíos

<div><span>Content</span></div> 

o

<div><p>Content</p></div> 

o

<div>Content</div> 

o

<div> </div> 

Cuando el DIV == <div> </div> quiero eliminarlo.

¿Alguna idea?

Respuesta

21

Incluso mejor (suponiendo jQuery):

$(document).ready(function() { $('div:empty').remove(); }); 

EDIT: Las otras respuestas son buenas, pero la OP querían quitar el elemento vacío, no ocultarlo.

+1

+1 para eso, se ajusta más a lo que OP pidió – marcgg

10

Creo que se puede hacer lo siguiente: Selector de seudo

$(function() { 
    $("div:empty").hide(); 
}); 

de jQuery empty es grande.

+0

eso es muy bueno, no sabía sobre el selector pseudovacías – marcgg

3

También puede utilizar sólo CSS para solucionar esto, poner una mesa con style="empty-cells:hide" todo el contenido y el cambio de la div a un td, así:

Antes:

<div>Content</div>

después:

<table style="empty-cells:hide"><tr><td>Content</td></tr></table>

+2

['empty-cells'] (https://developer.mozilla.org/en-US/docs/Web/CSS/empty-cells) beats [' : empty'] (https://developer.mozilla.org/en-US/docs/Web/CSS/:empty) por una versión de IE (8,0 vs 9,0). Siendo algo útil (incluso 3-4 años después de esta respuesta fue publicada), pero dada la cantidad de estructura extra añadido y la cantidad de tiempo que ha pasado desde que el IE 8, los futuros lectores pueden querer seguir con ': empty' respaldado por un Javascript solución. –

36

Usted puede hacer esto utilizando sólo CSS:

div:empty { display: none } 
+7

Esta es la respuesta correcta haciendo un mínimo para tener éxito. No encienda jQuery si CSS es suficiente. – nalply

+5

mejor solución, pero no funciona en Internet Explorer 8 y versiones antiguas de IE http://www.quirksmode.org/css/contents.html – Peter

+0

piel y eliminar no son lo mismo, toma eliminar por completo fuera de la DOM, por lo tanto, , ni siquiera se puede validar –

6

Ésta es otra manera fácil ... utilizando el filtro() ...

$('div').filter(function() { 

    return $.trim($(this).text()) === '' 

}).remove() 
Cuestiones relacionadas