2012-01-04 7 views
7

Sto costruendo un div e aggiungendolo a un div principale. Mentre faccio questo ho bisogno di ottenere l'altezza del div appena lo costruisco e prima di aggiungerlo.Jquery - Ottenere l'altezza del div costruito

per esempio,

<script> 
$(function(){ 
var text = $("#ObjText").html(); // This text is dynamic 

var dv = $("<div id='childDiv'>"+text+"</div>"); 
alert($(dv).height()); // This is getting '0' - Need to get the height of the div here. 

$("#page").append(dv); 

//After appending to page able to get the height of the child div 
alert($("#childDiv").height()); 
}); 
</script> 

nel mio corpo Tag,

<body> 
<div id="page"></div> 
</body> 

Please help me su questo. Grazie in anticipo.

risposta

6

Non penso che sia possibile ottenere l'altezza di qualsiasi oggetto creato in fase di esecuzione prima di aggiungerlo al documento.

jQuery esegue e ottiene il risultato di tutti gli oggetti DOM pronti disponibili sul documento (il tuo html) Quindi prima di accodarti non è possibile ottenere l'altezza.

Se vuoi ancora ottenere l'altezza, ti posso suggerire un posto temporaneo su html dove puoi aggiungere il tuo div attuale e controllare l'altezza. se vuoi te e aggiungi il div dove vuoi in seguito.

Spero che quanto sopra ti aiuta a trovare la soluzione ...

+0

Dannazione l'ho completamente perso, questo ha senso, grazie Murtaza. – Max

+0

siete i benvenuti! – Murtaza

8

Un div che non è stato aggiunto al dom non ha un'altezza.

Che cosa si può fare è nascondere il div, quindi aggiungere e ottenere l'altezza e poi mostrare il div:

$(function(){ 
    var text = $("#ObjText").html(); // This text is dynamic 

    var dv = $("<div id='childDiv'>"+text+"</div>").hide(); // hide the div 

    $("#page").append(dv); 
    alert(dv.height()); // should have the correct height 

    dv.show(); 
}); 

http://jsfiddle.net/MPtvK/

-2

inserirlo con style="display: none", e quindi usare il jquery normale. height() per ottenere l'altezza. Mostralo con .show() quando necessario.

+2

Quando si visualizza: nessuno, si prende il layout. –