2010-07-18 4 views
1

Cela m'a rendu fou quelqu'un d'aide coz je ne semble pas voir où le problème est.jquery hauteur() problème

<div id="parent"> 
    <div id="child"></div> 
</div> 
<script> 
    $('#parent').height(300) 

    $('#child').height($('#child').parent().height()-10); //EDITTED LINE 
</script> 

ce qui précède est la logique de ce que je dois faire. Je vérifie le tag html de "#parent" il dit style = "height: 300px;" mais l'enfant a une valeur de -10 :(devrait avoir 290; J'ai vérifié dans DOM, la valeur est juste j'ai aussi essayé le .css ('height') mais sans chance Quelqu'un at-il expérimenté cette genre de problème? si oui quelle est la solution :) me mettre hors de missary pls

Désolé les gars c'est le "parent(). height()" où le problème se présente. Voir le script à nouveau (désolé encore)

+4

http://jsfiddle.net/nzYF8/1/ Ça me va bien. Quel problème avez-vous? –

Répondre

3

.height() va chercher avec le 'px' attaché parfois. Vous devez supprimer le 'px', sinon vous faites '300px' - 10. Vous pouvez le faire en:

var height = parseInt($('#el').height(),10); 

pour le convertir en nombre.

En tant que tel, votre code doit être modifié de:

$('#child').height($('#child').parent().height()-10); 

à:

$('#child').height(parseInt($('#child').parent().height(),10)-10); 

ou mieux encore, ajouter la mise en cache à votre code pour le rendre plus rapide! (vous n'avez pas réextrayez #child.)

var $child = $('#child'); 
$child.height(parseInt($child.parent().height(),10)-10); 

Vous avez également oublié un point-virgule sur votre première ligne de code, mais que mon pas lié.

+0

retourne toujours la valeur de 0; '

' ma résolution d'écran est 1280 btw donc dnt être alarmé par le nombre :) – Val

+0

cela fonctionne avec parent(). Width(); renvoie la bonne valeur. 1280 mais height return 0 not 57 qui est la valeur attendue – Val

+0

@balupton: les points-virgules de fin de ligne sont facultatifs dans JavaScript. – casablanca

-1

Pourquoi ne pas simplement le régler à 290?

$('#child').height(290); 
+0

ce n'est pas une réponse: parce que l'enfant a un redimensionnement dedans et d'autres choses qui vont changer sa valeur de hauteur. Plus quelques autres valeurs qui sont enlevées qui ne sont pas toujours les mêmes – Val

0

Essayez de créer une variable befor

var childheight = $('#parent').height()-10; 
$('#child').height(childheight); 
+0

Je l'ai déjà essayé .. si je fais pour la largeur me donne la bonne réponse, mais pas pour la hauteur. – Val