7
votes

Jquery .css () retourner 100% comme 100px

$('.info').css('width');

11 commentaires

Cela signifie seulement que son parent a une largeur de 100px exactement.


@ Daniela.white j'ai essayé JQuery 1.7 ainsi que le dernier 1.8


@Bramvanroy la hauteur du conteneur est de 600px


.CSS ('largeur') retournera toujours la largeur en pixels, même si vous donnez la largeur en% dans son fichier CSS. Le% que vous donnez en CSS est comparé à son élément parent. Il y a quelque chose qui ne va pas avec votre code.puttez votre code dans le violon.


la hauteur? Vous voulez la largeur peut-être.


@Jose: C'est l'endroit où il aurait pu se tromper. Mevin Vérifiez la hauteur et la largeur des deux. Cela semble que la largeur = 100px du résultat Ce que vous obtenez.


La hauteur et la largeur du conteneur parent sont respectivement de 600px et 500px. @Milindanantwar


@mevin: c'est weird.put votre code quelque part.


Cela peut arriver quand il y a plus d'un élément sur la page avec la classe info . Ont essayé de mettre une exclamation dans ma réponse


BTW 94% de 600px est 564px et non 500px


Ceci est toujours un bug à partir de JQuery 2.1.4


5 Réponses :


0
votes

En réalité, il ne semble pas le cas: Voir ce violon .

html: < / p> xxx

css: xxx

js: xxx

Qu'est-ce que c'est Largeur d'information par rapport à? Est-ce un élément avec une largeur de 100 px peut-être?


3 commentaires

La largeur du parent d'informations est de 500PX.


Peu importe la largeur du parent. Ce que vous voulez cocher est la largeur de l'ancêtre le plus proche avec la position d'attribut définie sur relatif ou absolu. Pourrait être le parent ou un ancêtre plus éloigné.


Je suis difficile de comprendre comment vous obtenez la valeur que vous voyez. JQuery devrait renvoyer la largeur correcte, tant que vous avez interrogé pour cela de la manière correcte. Je mets ensemble ce violon simple à l'aide de jQuery 1.7.2 jsfiddle.net/2jpk9/1 . Comme le dit Jose Faeti, assurez-vous de prendre en compte d'autres éléments. Quelque chose d'autre pourrait être contraire à sa largeur.



-1
votes

Chaque broswer reviendra textuellement, mais logiquement des valeurs égales par exemple ,.FFFF, #FFFFFF et RVB (255.255.255) lors de l'utilisation de .CSS ()

au lieu d'utiliser .css ('largeur') utiliser .Width ()

Selon JQuery: http://api.jquerery.com/width/

La différence entre .CSS (largeur) et .Width () est que ce dernier retourne une valeur de pixel moins unité (par exemple, 400) tandis que le premier Renvoie une valeur avec des unités intactes (par exemple, 400px). La largeur() la méthode est recommandée lorsque la largeur d'un élément doit être utilisée dans un Calcul mathématique.


1 commentaires

.Width () renvoie également% en tant que px



0
votes

La largeur qu'elle revient dépend de quelle partie du code HTML est-elle écrite. Cela signifie dire que s'il est écrit à l'intérieur de l'étiquette, puis de 94% de pourcentage refléteraient 94% de ce montant particulier.

Mais encore une fois si une autre balise dans la même balise utilise déjà une quantité de largeur définie, l'info peut même obtenir un espace inférieur si la balise est définie avant l'étiquette INFO.

S'il vous plaît abandonner plus de code réel pour obtenir une meilleure réponse


1 commentaires

oui, il suppose que le retour de ce retour de ce div (parent div) mais malheureusement son retour de 94px plutôt que quelque chose autour de 490px @cj



0
votes

La seule chose qui explique ce comportement est que vous avez plus d'un élément avec la classe info

Lorsque cela se produit et que vous faites un $ ('. info'). CSS ("largeur"); jQuery vous retournera la largeur du premier élément Dans l'ensemble.

Si tel est le cas, vous devrez peut-être être plus spécifique avec votre sélecteur.

démo


2 commentaires

Il n'y a qu'un seul div avec classe d'informations dans la page Web. Le problème est le .CSS ('largeur') dans mon cas renvoie la même valeur que je figure dans la feuille de style sous forme de px. Si je définissais la largeur comme 200%, les .CSS ('largeur ») renvoie 200px.


Vous devrez peut-être publier votre code. Sinon, il pourrait être difficile / impossible d'expliquer pourquoi cela se produit.



14
votes

Je pense qu'une cause possible est le conteneur de l'élément étant caché au moment où vous essayez d'obtenir les dimensions.

J'ai eu une situation similaire avec des divs ni des tables imbriquées.

Voir le violon suivant où j'ai réussi à reproduire le comportement:

http://jsfiddle.net/36yvb/

Je pense toujours que c'est un bogue dans JQuery renvoyant un pourcentage en tant que numéro entier (sans le signe % ) lorsqu'il n'est pas capable de calculer réellement les dimensions de l'élément. Changez la largeur de # une autre cellule (exprimée en%) et voyez-la de renvoyer la même valeur sans le signe % lorsque la table est masquée.


0 commentaires