2009-09-21 22 views
15

Mam serwera wyjście strona HTML nie mogę poradzić sobie z użyciem czystego CSS, zasadniczo DIV czasami posiada:Jak ukryć/usunąć DIV, gdy pusty

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

lub

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

lub

<div>Content</div> 

lub

<div> </div> 

Kiedy DIV == <div> </div> chcę go usunąć.

Wszelkie pomysły?

Odpowiedz

21

Nawet lepiej (zakładając, jQuery):

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

EDIT: Inne odpowiedzi są dobre, ale PO chciała usunąć pusty element, a nie ukrywać.

+1

+1 za to, że pasuje więcej, co zadał OP na – marcgg

10

myślę, że można wykonać następujące czynności: empty selektor pseudo

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

jQuery jest wielki.

+0

To całkiem fajne, nie wiedziałem o pustym selektora pseudo – marcgg

3

Można również użyć CSS-tylko rozwiązać ten problem, umieszczając tablicę z style="empty-cells:hide" wokół treści, i zmieniając div do td, tak:

Przed:

<div>Content</div>

po:

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

+2

["puste komórki"] (https://developer.mozilla.org/en-US/docs/Web/CSS/empty-cells) bije [' : empty'] (https://developer.mozilla.org/en-US/docs/Web/CSS/:empty) przez jedną wersję IE (8.0 vs 9.0). Wciąż trochę przydatny (nawet 3-4 lata po opublikowaniu tej odpowiedzi), ale biorąc pod uwagę ilość dodanej dodatkowej struktury i ilość czasu, która minęła od IE 8, przyszli czytelnicy mogą chcieć trzymać się ': empty' wspieranego przez JavaScript rozwiązanie. –

36

Ty Można to zrobić używając tylko CSS:

div:empty { display: none } 
+7

To jest poprawna odpowiedź, która robi minimum, aby odnieść sukces. Nie odpalaj jQuery, jeśli sam CSS jest wystarczający. – nalply

+5

Najlepsze rozwiązanie, ale nie działa w IE8 i starszych wersjach IE http://www.quirksmode.org/css/contents.html – Peter

+0

ukryj i usuń nie są takie same, usuń całkowicie usuwa go z DOM, stąd , nie może być nawet zatwierdzone. –

6

Oto kolejny prosty sposób ... użyciu filtra() ...

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

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

}).remove() 
Powiązane problemy