2010-11-05 4 views
2

J'essaie de calculer la largeur d'un élément de sorte que lorsque j'utilise JavaScript pour envelopper un élément parent, je peux définir la largeur du parent pour qu'il corresponde à la largeur de l'enfant. Le $('#element').css('width'); évident n'est pas tout à fait ce que je veux, car il semble seulement renvoyer la valeur calculée en pixels. Est-il possible que je puisse retourner la valeur CSS réelle, que ce soit 300px ou 20% ou auto, au lieu de la valeur calculée?Comment obtenir la valeur de largeur CSS avec Javascript?

Voici comment cela est généralement configuré, mais j'aimerais connaître la valeur CSS de #child au lieu de la valeur calculée.

$(document).ready(function(){ 
    $('#child').wrap('<div id="parent"></div>'); 
    $('#parent').each(function(){ 
     var childWidth = $(this).children('#child').css('width'); 
     $(this).css('width', childWidth) 
    }); 
}); 
+0

Il y avait une question très étroitement liée aujourd'hui: http://stackoverflow.com/questions/4105355 Lire la réponse de bobince pour quelque arrière-plan –

+0

Voulez-vous obtenir la propriété width de l'attribut 'style' sur l'élément, ou aussi les paramètres définis dans les classes CSS? –

Répondre

2

Je ne crois pas que vous puissiez le faire. Le mieux que vous obtiendrez est offsetWidth ou clientWidth qui retourne la valeur calculée, avec et sans les marges de comptage, le remplissage et les bordures.

0

Tout le monde, mais IE soutient window.getComputedStyle(element), que vous pouvez utiliser comme ceci:

getComputedStyle($('#child')).width; // returns actual width of #child 

Est-ce que ne vous aidera pas avec IE, cependant.

+0

Pisse. La raison pour laquelle je faisais cela était que je pouvais mettre un filtre flou sur l'élément parent "if lte IE 8" pour imiter le look box-shadow CSS3 (voir: http://martinsmucker.com/demo/ie_shadow2.html). : -/Ceci est une chose très utile à savoir, cependant, merci! –

Questions connexes