2011-09-27 10 views
5

campione jQuery:è possibile ottenere l'altezza di un oggetto jQuery clonato?

$('document').ready(function(){ 
    var $theP = $('p'); 
    var $theDiv = $('div'); 
    $theP.html($theP.html() + "<br>div height: " + $theDiv.outerHeight()); 
    var $theClone = $theDiv.clone(); 
    $theP.html($theP.html() + "<br>clonded div height: " + $theClone.outerHeight()); 
}) 

collegamento in diretta: http://jsbin.com/odujiv/4

In esecuzione sopra, si ottiene un risultato di '0' quando si cerca di ottenere la sua altezza. Penso che questo sia dovuto al fatto che l'oggetto clonato non è stato ancora inserito nel DOM. L'unico modo per ottenere l'altezza di aggiungere prima l'elemento clonato al DOM? Se è così, penso che sia fattibile, ma sarebbe bello gestirlo prima di rimetterlo nel DOM.

+0

C'è una soluzione "hacky" per qualcosa di simile proposta qui: http://stackoverflow.com/questions/2345784/jquery-get-height-of-hidden-element-in-jquery-1-4-2 – Clive

+0

Sì Immagino che la soluzione sia che devo aggiungerlo al DOM prima di ottenere l'altezza. Probabilmente funzionerà. Potrei aggiungerlo al DOM, posizionarlo fuori dallo schermo, ottenere l'altezza, fare i miei calcoli, quindi posizionarlo dove voglio. –

+1

Mi sono imbattuto in questo prima - l'aggiunta al DOM fuori dallo schermo ha fatto il trucco. – Pat

risposta

4

No, purtroppo. Gli elementi HTML grezzi non hanno dimensioni quando non sono allegati al documento e jQuery non ha implementato una soluzione alternativa. Suppongo che questo sia dovuto al modo in cui le dimensioni degli elementi HTML interdipendenti sono l'una sull'altra!

-1

Prova questa:

$theClone.height(); 

or 

$theClone.css('height'); 
+1

Ho specificamente bisogno di outerHeight, ma il problema è lo stesso. Quanto sopra restituisce anche 0 –

Problemi correlati