2009-09-21 6 views
15

ich einig Server-Seite HTML-Ausgabe haben kann ich nicht mit der Verwendung von reinen CSS umgehen, im Wesentlichen die DIV hält manchmal:Wie verstecken/entfernen, um einen DIV, wenn sie leer

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

oder

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

oder

<div>Content</div> 

oder

<div> </div> 

Wenn das DIV == <div> </div> Ich möchte es entfernen.

Irgendwelche Ideen?

Antwort

21

Noch besser ist (vorausgesetzt, jQuery):

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

EDIT: Die anderen Antworten sind gut, aber die OP wollte das leere Element entfernen, nicht verbergen.

+1

+1 dafür, es passt mehr, was das OP gebeten – marcgg

10

ich glaube, Sie folgendes tun:

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

empty Pseudo-Selektor jQuery ist groß.

+0

Das ist ziemlich cool, wusste ich nicht über den leeren Pseudo-Selektor – marcgg

3

Sie können auch CSS-nur verwenden, um dies zu lösen, eine Tabelle mit style="empty-cells:hide" um den Inhalt setzen, und die Änderung der div zu einem td, wie folgt aus:

Vorher:

<div>Content</div>

Nachher: ​​

<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) mit einer Version von IE (8.0 vs. 9.0). Noch etwas nützlich (sogar 3-4 Jahre nachdem diese Antwort gepostet wurde), aber angesichts der Menge zusätzlicher Struktur und der Zeit, die seit IE 8 verstrichen ist, könnten zukünftige Leser bei ': empty' bleiben, unterstützt durch ein Javascript Lösung. –

36

Sie dies mit nur CSS tun kann:

div:empty { display: none } 
+7

Dies ist die richtige Antwort, um ein Minimum zu erreichen. Starten Sie jQuery nicht, wenn CSS alleine ausreicht. – nalply

+5

Beste Lösung, aber es funktioniert nicht in IE8 und älteren Versionen von IE http://www.quirksmode.org/css/contents.html – Peter

+0

verstecken und entfernen sind nicht das Gleiche, entfernt vollständig entfernt es aus dem DOM, daher kann nicht einmal validiert werden –

6

Hier ist eine weitere einfache Möglichkeit, ... die Filter mit() ...

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

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

}).remove() 
Verwandte Themen