2009-03-10 11 views
6

Tengo un div que se carga dinámicamente con dos imágenes siempre y posiblemente una div en el medio. Ni las imágenes ni el div tienen identificadores asociados con ellos (y no puedo hacer que tengan Id). Inspeccionándolos con Firebug solo se muestran como <IMG> y <DIV>. Necesito obtener la altura de este div infantil cuando existe.¿Cómo uso jquery para obtener la altura de un elemento secundario creado dinámicamente sin Id

Tenía la esperanza de que pudiera hacer algo como esto ...

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

o esto ...

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

Desde jQuery $ devuelve una matriz. El segundo da errores de JavaScript, así que sé que estoy fuera de allí. Creo que estos deberían ser cercanos sin embargo. ¿Algunas ideas?

Edit: Aquí está el html contra el que me estoy ejecutando.

<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

favor explicar un lil más claramente? ¿'Posiblemente un DIV entre' significa que DIV posible contiene el IMGS o que el posible DIV está entre los IMG? Si el DIV interno NO existe, ¿desea CERO para la altura resultante? –

+0

el div está entre las dos imágenes, olvidé poner la segunda imagen allí, voy a editar eso. Si el div no está allí, null o 0 estarían bien. No puedo obtener las alturas de las imágenes de esta manera si eso ofrece alguna idea. – Carter

Respuesta

1

Su primera funcionará, siempre que su selector esté bien. Intente lo siguiente y ver lo que se obtiene:

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

Si usted no recibe un fondo de color rosa, donde era de esperar, fijar su selector, y se va a trabajar con la altura comunicado también.

6

para obtener un elemento de jQuery en un índice, utilice la función de eq():

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

o

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

o

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

Gracias $ ($ ("# parentDiv> DIV") [0]). Height(); es lo más cercano que he tenido. Sin embargo, está devolviendo un resultado inesperado (664, no debería ser tan grande). Tendré que jugar con eso. – Carter

+0

el problema también podría ser que está usando un posicionamiento absoluto para la imagen, intente configurarlo en otra cosa y vea si su altura es más sana – cobbal

+0

Creo que puede estar en lo cierto. Sin embargo, ese código se genera automáticamente. Puedo mover el marco div alrededor de ese código que cambia las cosas, pero no puedo cambiar el código que publiqué. – Carter

0

Trate

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

Que debe hacer el truco

2

sólo para añadir a todas las otras formas de hacerlo:

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