2009-03-10 2 views
6

Ho un div che viene caricato dinamicamente con due immagini sempre e forse una div in mezzo. Né le immagini né le div hanno identificativi associati a loro (e non posso farle avere ID). Ispezionandoli con firebug vengono mostrati come <IMG> e <DIV>. Ho bisogno di ottenere l'altezza di questo div bambino quando esiste.Come utilizzare jquery per ottenere l'altezza di un elemento figlio creato dinamicamente senza Id

speravo avrei potuto fare qualcosa di simile ...

$("#parentDiv > DIV").height(); 

o questo ...

$("#parentDiv > DIV")[0].height(); 

Dal jquery $ restituisce un array. Il secondo dà errori javascript quindi so che sono fuori. Penso che questi dovrebbero essere vicini però. Qualche idea?

Modifica: Ecco l'html su cui sto correndo.

<DIV id="parentDiv" name="parentDiv"> 
    <IMG style="DISPLAY: block; VERTICAL-ALIGN: bottom; CURSOR: pointer" height="17" src="..." /> 

    <!-- this div may or may not be here --> 
    <DIV style="DISPLAY: block; BACKGROUND-IMAGE: url(...); WIDTH: 16px; CURSOR: pointer; BACKGROUND-REPEAT: repeat-y; POSITION: relative; HEIGHT: 144px; outline: none"> 
     <DIV style="LEFT: 0px; OVERFLOW: hidden; WIDTH: 16px; POSITION: absolute; TOP: 128px; HEIGHT: 8px"> 
      <IMG style="LEFT: 0px; POSITION: absolute; TOP: 0px" height="8" src="..." /> 
     </DIV> 
    </DIV> 

    <IMG style="DISPLAY: block; VERTICAL-ALIGN: bottom; CURSOR: pointer" height="17" src="..." /> 
</DIV> 
+0

Si prega di spiegare un lil più chiaramente? Forse "un DIV in mezzo" significa che il possibile DIV contiene l'IMGS o che il possibile DIV è tra le IMG? Se il DIV interno NON esiste, vuoi ZERO per l'altezza risultante? –

+0

il div è tra le due immagini, ho dimenticato di mettere la seconda immagine lassù, la modifico. Se il div non è lì, null o 0 andrebbero entrambi bene. Non riesco a ottenere le altezze delle immagini in questo modo se questo offre qualche intuizione. – Carter

risposta

1

Il primo funzionerà, a condizione che il selettore funzioni correttamente. Provare quanto segue e vedere quello che si ottiene:

$("#parentDiv > DIV").css("background", "pink"); 

Se non si ottiene uno sfondo rosa dove ci si aspetta, risolvere il tuo selettore, e lavorerà con l'altezza-statement pure.

6

per ottenere un elemento jQuery indicizzato, utilizzare la funzione eq():

$("#parentDiv > DIV").eq(0).height(); 

o

$($("#parentDiv > DIV")[0]).height(); 

o

$("#parentDiv > DIV:eq(0)").height(); 
+0

Grazie $ ($ ("# parentDiv> DIV") [0]). Height(); è il più vicino che ho ottenuto. Restituisce comunque un risultato inaspettato (664, non dovrebbe essere così grande). Dovrò giocarci. – Carter

+0

il problema potrebbe anche essere che stai usando il posizionamento assoluto per l'immagine, prova ad impostarlo su qualcos'altro e vedi se la tua altezza è più sana – cobbal

+0

Penso che tu abbia ragione. Tuttavia, quel codice viene generato automaticamente. Posso spostare il div surround quel codice intorno a cui cambia le cose, ma non posso cambiare nessuno dei codici che ho postato. – Carter

0

Prova

$($("#parentDiv > div")[0]).height(); 

Questo dovrebbe fare il trucco

2

solo per aggiungere a tutti gli altri modi di farlo:

$("#parentDiv > div:first").height();