2010-11-18 18 views
41

Wie kann ich die Eigenschaften eines Elements mit jquery erhalten? Ich möchte insbesondere die Größe des Randes eines Divs erhalten.Erhalte die Randgröße eines Elements mit jquery

Ich habe den Stil der div in einer CSS-Datei festgelegt, zum Beispiel,

.item-form { 
    margin:0px 0px 10px 0px; 
    background: blue; 
} 

die html,

<form> 
... 

<div class="item-form"> 
    <textarea class="autohide"></textarea> 
</div> 

... 

</form> 

ich mit diesem Code versucht, aber es funktioniert nicht offensichtlich,

$(".autohide").each(function(){ 

var $this = $(this); 
alert($this.parents("div:.item-form").css("margin")); 


}); 

irgendwelche Ideen? Vielen Dank.

Antwort

77

Das CSS-Tag 'margin' ist eigentlich eine Kurzschrift für die vier separaten Randwerte, oben/links/unten/rechts. Verwenden Sie css('marginTop') usw. - beachten Sie, dass sie am Ende "px" haben, wenn Sie sie auf diese Weise angegeben haben.

Verwenden Sie parseInt() um das Ergebnis, um es in den Zahlenwert einzuschalten.

NB. Wie von Omaty festgestellt, ist die Reihenfolge der Kurzschriftzeile "margin": top right bottom left - Die obige Liste wurde nicht in einer Weise geschrieben, die die Listenreihenfolge sein soll, sondern nur eine Liste der im Tag angegebenen Liste.

+0

bekam es dank so viel! – laukok

+22

Wow, ich wusste nicht, dass parseInt ('45 goobledeygook '); ergab 45. JavaScript, du bist verrückt! –

+3

@WillMorgan: Es wird gut mit Müll nach dem Integer-Teil, aber nur Whitespace davor erlaubt. – Orbling

15

Sie werden ... verwenden möchten

alert($this.parents("div:.item-form").css("marginTop").replace('px', '')); 
alert($this.parents("div:.item-form").css("marginRight").replace('px', '')); 
alert($this.parents("div:.item-form").css("marginBottom").replace('px', '')); 
alert($this.parents("div:.item-form").css("marginLeft").replace('px', '')); 
+0

das ist großartig! vielen Dank! – laukok

+3

-1 Dies führt zu einer Verkettung von Strings, wenn versucht wird, sie zu einer Ganzzahl hinzuzufügen. – Stijn

+5

Und die richtige Antwort ist ..... alert (parseInt ($ this.parents ("div: .item-form"). Css ("marginTop"), 10)); – mrbinky3000

4

Von jQuery's website

Stenografie CSS-Eigenschaften (z Marge, Hintergrund, Rahmen) werden nicht unterstützt. Wenn Sie beispielsweise den gerenderten Rand mit abrufen möchten, verwenden Sie: $ (elem) .css ('marginTop') und $ (elem) .css ('marginRight') und so weiter.

+0

habe es vielen dank :) – laukok

7

Exemple, für:

<div id="myBlock" style="margin: 10px 0px 15px 5px:"></div> 

In diesem JS-Code:

var myMarginTop = $("#myBlock").css("marginBottom"); 

Die var "15px", eine Zeichenfolge wird.

Wenn Sie eine Ganzzahl wünschen, um NaN (keine Zahl) zu vermeiden, gibt es mehrere Möglichkeiten.

Der schnellste stammt js Methode zu verwenden:

var myMarginTop = parseInt($("#myBlock").css("marginBottom")); 
Verwandte Themen