2009-09-21 7 views
15

J'ai une sortie HTML côté serveur, je ne peux pas faire face à l'utilisation de CSS pur, essentiellement la DIV tient parfois:Comment masquer/supprimer un DIV quand il est vide

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

ou

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

ou

<div>Content</div> 

ou

<div> </div> 

Lorsque la DIV == <div> </div> Je veux l'enlever.

Des idées?

Répondre

21

Encore mieux (en supposant jQuery):

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

EDIT: Les autres réponses sont bonnes, mais l'OP voulait supprimer l'élément vide, pas le cacher.

+1

+1 pour cela, il se glisse plus ce que l'OP a demandé – marcgg

10

Je pense que vous pouvez faire ce qui suit:

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

sélecteur de pseudo jQuery de empty est grande.

+0

C'est assez cool, je ne savais pas sur le sélecteur de pseudo vide – marcgg

3

Vous pouvez également utiliser CSS seule pour résoudre ce problème, mettre une table avec style="empty-cells:hide" autour du contenu, et en changeant le div à un td, comme ceci:

Avant:

<div>Content</div>

après:

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

+2

[ 'vide-cells'] (https://developer.mozilla.org/en-US/docs/Web/CSS/empty-cells) bat [' : empty'] (https://developer.mozilla.org/en-US/docs/Web/CSS/:empty) par une version de IE (8,0 vs 9,0). Encore un peu utile (même 3-4 ans après cette réponse a été publiée), mais compte tenu de la quantité de structure supplémentaire ajoutée et la quantité de temps qui est passé depuis IE 8, les futurs lecteurs peuvent vouloir coller avec ': empty' soutenu par un Javascript Solution. –

36

Vous peut le faire en utilisant uniquement CSS:

div:empty { display: none } 
+7

C'est la bonne réponse à faire un minimum pour réussir. Ne lancez pas jQuery si CSS seul est suffisant. – nalply

+5

La meilleure solution, mais il ne fonctionne pas dans IE8 et anciennes versions d'IE http://www.quirksmode.org/css/contents.html – Peter

+0

cacher et supprimer ne sont pas les mêmes, enlever complètement prend hors du DOM, d'où , il ne peut même pas être validé –

6

Voici une autre façon facile ... en utilisant le filtre() ...

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

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

}).remove() 
Questions connexes