2010-11-18 26 views
41

Bir öğenin özelliklerini jquery ile nasıl edinebilirim? Özellikle bir divın sınırının büyüklüğünü almak istiyorum.Bir öğenin kenar boşluğu boyutunu jquery ile alın

Bu kod ile çalıştı

<form> 
... 

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

... 

</form> 

Ben örneğin bir .css dosyasında div stilini belirledik,

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

html, ama belli ki başarısız,

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

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


}); 

herhangi bir fikir? Teşekkürler.

cevap

77

CSS etiketi 'marjı', gerçekte dört ayrı kenar boşluğu değeri için üst/sol/alt/sağ kısaltmasıdır. css('marginTop'), vb. Kullanın - eğer onları bu şekilde belirttiyseniz, sonunda 'px' olacaklarını unutmayın.

parseInt()'u, sonuçta sayı değerine çevirmek için kullanın.

NB. Omaty tarafından belirtildiği gibi, shorthand 'margin' etiketinin sırası: top right bottom left - yukarıdaki liste, liste sırasına göre tasarlanan bir şekilde yazılmamıştır, sadece etikette belirtilenlerin bir listesi.

Sen kullanmak isteyeceksiniz
+0

çok o sayesinde var:

en hızlı yerli js yöntem kullanmaktır! – laukok

+22

Vay, o parseInt ('45 gobbledeygook ') olduğunu bilmiyordum; 45 verdi. JavaScript, seni deli! –

+3

@WillMorgan: Tamsayı kısmından sonra çöp ile iyi bir şekilde başa çıkıyor, ancak önce yalnızca boşluk bırakacak. – Orbling

15

...

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

bu harika! çok teşekkür ederim! – laukok

+3

-1 bu, bir tamsayıya eklemeye çalışırken dizgi birleştirme neden olur. – Stijn

+5

Ve doğru cevap ..... uyarıdır (parseInt ($ this.parents ("div: .item-form"). Css ("marginTop"), 10)); – mrbinky3000

4

jQuery's website itibaren

Steno CSS özellikleri (örneğin marjı, arka plan, sınır) desteklenmez. Örneğin, işlenen kenar boşluğunu almak istiyorsanız, aşağıdakileri kullanın: $ (elem) .css ('marginTop') ve $ (elem) .css ('marginRight'), vb.

+0

bunu çok teşekkür etti :) – laukok

7

Exemple için: var olur

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

"15px", bir dize: Bu ise

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

kod js.

Bir Tamsayı istiyorsanız, NaN'den (Numara Değil) kaçınmak için birden çok yol vardır.

var myMarginTop = parseInt($("#myBlock").css("marginBottom")); 
İlgili konular