get the margin size of an element with jquery

JqueryCssHtml

Jquery Problem Overview


How can I get the properties of an element with jquery? I want to get the size of the margin of a div in particular.

I have set the style of the div in a .css file, for instance,

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

the html,

<form>
...

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

...

</form>

I tried with this code, but it fails obviously,

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

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


});

any ideas? thanks.

Jquery Solutions


Solution 1 - Jquery

The CSS tag 'margin' is actually a shorthand for the four separate margin values, top/left/bottom/right. Use css('marginTop'), etc. - note they will have 'px' on the end if you have specified them that way.

Use parseInt() around the result to turn it in to the number value.

> NB. As noted by Omaty, the order of the shorthand 'margin' tag is: top right bottom left - the above list was not written in a way intended to be the list order, just a list of that specified in the tag.

Solution 2 - Jquery

You'll want to use...

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

Solution 3 - Jquery

Exemple, for :

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

In this js code :

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

The var becomes "15px", a string.

If you want an Integer, to avoid NaN (Not a Number), there is multiple ways.

The fastest is to use native js method :

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

Solution 4 - Jquery

From jQuery's website

> Shorthand CSS properties (e.g. margin, > background, border) are not supported. > For example, if you want to retrieve > the rendered margin, use: > $(elem).css('marginTop') and > $(elem).css('marginRight'), and so on.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRunView Question on Stackoverflow
Solution 1 - JqueryOrblingView Answer on Stackoverflow
Solution 2 - JqueryBenView Answer on Stackoverflow
Solution 3 - JqueryJordanView Answer on Stackoverflow
Solution 4 - JqueryMatthew J MorrisonView Answer on Stackoverflow