2010-11-18 25 views
41

Come posso ottenere le proprietà di un elemento con jquery? Voglio ottenere la dimensione del margine di un div in particolare.ottiene la dimensione del margine di un elemento con jquery

ho impostato lo stile del div in un file css, per esempio,

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

l'html,

<form> 
... 

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

... 

</form> 

ho provato con questo codice, ma non riesce ovviamente,

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

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


}); 

qualche idea? Grazie.

risposta

77

Il tag CSS 'margin' è in realtà una scorciatoia per i quattro valori di margine separati, in alto/a sinistra/in basso/a destra. Usa css('marginTop'), ecc. - nota che avranno "px" alla fine se li hai specificati in quel modo.

Utilizzare parseInt() attorno al risultato per trasformarlo nel valore numerico.

NB. Come rilevato da Omaty, l'ordine del tag "margine" di stenografia è: top right bottom left - l'elenco precedente non è stato scritto in un modo inteso per essere l'ordine di lista, ma solo un elenco di quello specificato nel tag.

+0

ce l'ha thanks so much! – laukok

+22

Wow, non sapevo che parseInt ('45 gobbledeygook '); fruttato 45. JavaScript, sei pazzo! –

+3

@WillMorgan: Gestisce bene con garbage dopo la parte intera, ma consentirà solo spazi bianchi prima di esso. – Orbling

15

Ti consigliamo di utilizzare ...

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

questo è fantastico! Grazie mille! – laukok

+3

-1 ciò causerà concatenazione di stringhe quando si tenta di aggiungerlo a un numero intero. – Stijn

+5

E la risposta corretta è ..... alert (parseInt ($ this.parents ("div: .item-form"). Css ("marginTop"), 10)); – mrbinky3000

4

Da jQuery's website

proprietà Stenografia CSS (per esempio di margine, sfondo, confine) non sono supportati. Ad esempio, se si desidera recuperare il margine di rendering , utilizzare: $ (elem) .css ('marginTop') e $ (elem) .css ('marginRight') e così via.

+0

capito grazie mille :) – laukok

7

Esempio, per:

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

In questo js codice:

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

Il var diventa "15px", una stringa.

Se si desidera un numero intero, per evitare NaN (non un numero), esistono diversi modi.

Il più veloce è quello di utilizzare il metodo nativo js:

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