2009-03-10 5 views
6

J'ai un div qui est chargé dynamiquement avec deux images toujours et éventuellement un div entre. Ni les images ni le div n'ont d'identifiant associé à eux (et je ne peux pas les faire avoir des Id). Les inspecter avec firebug ils sont juste montrés comme <IMG> et <DIV>. J'ai besoin d'obtenir la hauteur de ce div enfant quand il existe.Comment j'utilise jquery pour obtenir la hauteur d'un élément enfant créé dynamiquement sans Id

J'espérais que je pouvais faire quelque chose comme ça ...

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

ou ... ce

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

Depuis jquery $ retourne un tableau. Le second donne des erreurs javascript alors je sais que je suis là-bas. Je pense que ceux-ci devraient être proches. Des idées?

Editer: Voici le code HTML contre lequel je cours.

<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

S'il vous plaît expliquer un lil plus clairement? Est-ce que "éventuellement un DIV entre" signifie que DIV possible contient l'IMGS ou que DIV possible est entre les IMG? Si la DIV interne n'existe pas, voulez-vous ZERO pour la hauteur résultante? –

+0

le div est entre les deux images, j'ai oublié de mettre la deuxième image là-haut, je vais modifier cela. Si le div n'est pas là, null ou 0 serait bien. Je ne peux pas obtenir la hauteur des images de cette manière non plus si cela offre un aperçu. – Carter

Répondre

1

Votre premier fonctionnera tant que votre sélecteur est en ordre. Essayez ce qui suit et voyez ce que vous obtenez:

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

Si vous ne recevez pas un fond rose où vous vous attendez, fixer votre sélecteur, et il va travailler avec la déclaration de hauteur ainsi.

6

pour obtenir un élément jQuery indexé, utilisez la fonction eq():

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

ou

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

ou

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

Merci $ ($ ("# parentDiv> DIV") [0]). Height(); est sur le plus proche que j'ai eu. Il renvoie cependant un résultat inattendu (664, il ne devrait pas être si grand). Je vais devoir jouer avec. – Carter

+0

le problème pourrait également être que vous utilisez le positionnement absolu pour l'image, essayez de le définir à autre chose et voir si votre taille est plus saine – cobbal

+0

Je pense que vous pouvez avoir raison. Cependant, ce code est généré automatiquement. Je peux déplacer le div autour de ce code là-bas qui change les choses, mais je ne peux pas changer le code que j'ai posté. – Carter

0

Essayez

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

Cela devrait faire l'affaire

2

Juste pour ajouter à toutes les autres façons de le faire:

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