2012-03-30 16 views
2

Was ich habe ist manchmal auf ym Seite ein div könnte leer sein und es braucht leeren Platz. Deshalb möchte ich in der Lage sein, es zu verbergen, von der Breite klein machen, wenn es leer ist ..Wie überprüft man, ob div leer ist und verschwindet?

dies der html ...

<div class="four columns"> 
     <div class="inner-column" style="height:500px;overflow: auto;">    
      <ul class="SubMenu"> 
      </ul> 
     </div> 
    </div> 

ist dies die jquery ich versuche ...

if ($('.four columns').is(":empty")) { 
      $('.four').css('width','15px'); 
     } 

was sollte es sein?

Beispiel: http: //jsfiddle.net/uzi002/yad9Q/6/

+0

Ihre Wähler ist falsch. Es sollte '$ ('. Four.columns') sein.' – rgin

+0

funktioniert immer noch nicht. – Beginner

+0

Vielleicht könnte mehr Code oder Informationen über das, was Sie versuchen, helfen. Dieser Code funktioniert, wenn '.four.columns' eine ursprüngliche Höhe von' <15px' hat. Die Bedingung gibt true zurück, wenn '.four.columns' leer ist. Bedeutet kein HTML oder Text. – rgin

Antwort

1

Das Problem mit der Überprüfung text() für eine Länge von Null oder gegen eine leere Zeichenfolge ist, dass es alle Registerkarten und Leerzeichen enthält. So wenden Sie einen $.trim() auf das Ergebnis (demo):

$(function() { 

    if ($.trim($('.four.columns').text()).length === 0) { 
     $('.four.columns').hide(); 
    } 

});​​​​​​ 

auch, falls Sie alle Spalten überprüfen möchten, verwenden Sie:

$(function() { 

    /* check all columns */ 
    $('.columns').each(function(){ 
     if ($.trim($(this).text()).length === 0) { 
      $(this).hide(); 
     } 
    }); 

});​​​​​​ 
1

Die Technik, die ich verwende in der Regel ist die Länge des Textes im div zu testen:

if ($('.four.columns').text().length === 0) { 
    $('.four').css('width', '15px'); 
} 
+0

Der Selektor sollte '.four.columns' sein. –

+0

Ich habe es nur direkt aus dem OP-Beispiel kopiert, aber Sie haben Recht. Aktualisierte Antwort – pete

0

Sie könnten do

if ($('.four columns').text() === '') { 
     $('.four colums').hide(); 
    } 

oder

if ($('.four columns').html() === '') { 
     $('.four colums').hide(); 
    } 
+0

Der Selektor sollte '.four.columns' sein. –

+0

das macht es kleiner, auch wenn es Links im Untermenü – Beginner

0

können Sie die Höhe 0 machen oder ausblenden:

if($(".innerColumn").text() == ""){ 
    $(".innerColumn").css("height",0); or $(".innerColumn").hide() 
} 
0

Zuerst sparate Klassen mit einem Raum

<div class="four columns"> 

Das sind jetzt 2 Klassen genannt „vier“ und „Spalten“, so dass die Klasse kann nicht ist nicht vier Säulen genannt.

Ich sollte die Länge Funktion wählen, um zu überprüfen, ob es leer ist.

if ($('.columns .inner-column').html().length === 0){ 
    $(".columns .inner-column").hide() 
} 

Die Verbergen-Funktion verbirgt das gesamte Element. Es ist im Quellcode, aber nicht sichtbar für den Client.

Darf ich fragen, warum Sie dieses Problem Client-Seite lösen möchten? Ich denke, es ist schlauer, die Serverseite zu überprüfen, wenn der Inhalt leer ist, und dann das Bild nicht zu erzeugen.

+0

auf Seite laden das Menü auf der linken Seite wird erstellt, die untergeordnete Seiten hat, wenn es keine untergeordneten Seiten gibt dann die linke Seite ist leer, aber es ist leer dort – Beginner

+0

auch ich versuchte das oben und funktioniert immer noch nicht und ja, ich weiß, es gibt zwei Klassen auf diese div – Beginner

+0

Ich glaube, Sie möchten überprüfen, ob die ul leer ist. Es ist unfähig, dass Sie den richtigen Selektor auswählen. __. inner-colum__ ist nicht leer, weil es eine ul innen gibt. Die ul ist leer, also willst du das überprüfen. Das funktioniert: http://jsfiddle.net/yad9Q/19/ –

Verwandte Themen