Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert css width string to regular number

Tags:

While trying to compute the width of an hidden element I found that jquery.width() returns 0 for that elements' width.

I found out that using jquery.css('width') would return the correct width by using the declared style width (even if that value is different from the initial stylesheet). The problem is that the css('width') method returns a string, generally in a "100px" fashion. My question resolves into: how to retrieve the number from the "100px" string? Is there an easy way?

like image 281
vitorhsb Avatar asked Aug 20 '10 10:08

vitorhsb


1 Answers

If it always returns in px format, "100px", "50px" etc (i.e. not "em" or percent), you could just...

var width = parseInt($("#myelem").css("width"),10); // always use a radix 

or

var width = parseInt(element.style.width,10); // always use a radix 

It ignores the "px" suffix so you should be good to go.

Although deep down I'm thinking that something isn't right if $("#myelem").width() isn't working.

Note on hidden elements.

If you are adding jQuery to progressively enhance you page, the element you are calculating should be visible when the page first loads. So you should get the width before you initially hide the element. By doing this, $("#myelem").width() will work.

var myWidth = 0;  $(document).ready( function () {     myWidth = $("#myelem").width();     $("#myelem").hide(); }); 
like image 84
Fenton Avatar answered Sep 17 '22 20:09

Fenton