2012-02-02 14 views
11

Stavo cercando di ottenere un elenco del valore di altezza dell'elemento ma stava ritornando 0.
Ho fatto qualche ricerca e ho visto che per ottenere l'altezza dell'elemento, quell'elemento deve essere visibile.
Ma voglio controllare la sua altezza quando è nascosto. Se la sua altezza è maggiore di un certo valore, usa alcune funzioni per renderla visibile. C'è un modo per fare questo?Jquery ottenendo l'altezza di un elemento nascosto

voglio dire: altezza

  1. Check elemento nascosto.
  2. Se ha valore OK, renderlo visibile.
  3. Se non ha il valore richiesto, alcune funzioni.
  4. Renderlo visibile.
+2

esatto duplicato di http://stackoverflow.com/questions/2345784/ jquery-get-height-of-hidden-element-in-jquery-1-4-2 – samccone

+2

funziona con elementi nascosti - http://jsfiddle.net/xgbEv/ –

+0

@ken redler: questa è la soluzione migliore che ho trovato a questo proposito. Ho appena dovuto usare .appendTo ('body') perché non funzionava con .show() – Guntram

risposta

17

È possibile show l'elemento di ottenere l'altezza e poi nasconderlo, visivamente non vedrai alcuna differenza.

var height = $('elementSelector').show().height(); 
$('elementSelector').hide(); 
if(height != <<HeightToCompare>>){ 
    //Code here 
} 
//Finally make it visible 
$('elementSelector').show(); 

Demo

+0

Probabilmente sarà uno sfarfallio. – AlienWebguy

+1

No, non sfarfalla. Dai un'occhiata a http://jsfiddle.net/PdEbM/ – ShankarSangoli

+0

Ho pensato di mostrare un elemento, quindi nasconderlo causerebbe qualche problema visivo, ma lo provo ora. Sì, non ha alcun problema. Grazie per l'aiuto. – Malixxl

6

Un modo è quello di clonare l'oggetto, posizionare il clone lontano dalla finestra, renderlo visibile, misurare il clone e quindi distruggerlo.

in modo da avere:

<div id="maybe" style="display: none;"> 
    Something 
</div> 

Dal momento che si sta utilizzando jQuery, si farebbe qualcosa di simile:

$('#maybe') 
    .clone() 
    .attr('id','maybe_clone') // prevent id collision 
    .css({     // position far outside viewport 
    'position': 'absolute', 
    'left': '-1000px' 
    }); 

if($('#maybe_clone').show().height() > 200) { 
    $('#maybe').show(); 
} 

$('#maybe_clone').remove();  // housekeeping 
+0

+1, quello o posizionarsi temporaneamente in modo assoluto e spostare l'elemento stesso. Poiché l'elemento è nascosto all'inizio, non disturberà il markup. –

+0

Se 'display: none' è applicato a un elemento genitore, questo non funzionerà. Una correzione potrebbe iniettare il clone all'esterno del suo genitore originale: '.clone(). AppendTo ('body')'. –

+0

grazie per darmi un indizio per calcolare l'altezza div nascosta –

Problemi correlati