Ok, I was going to answer someone’s question here on SO about why their script wasn’t working. They loaded content into a hidden div, then got the height so they could animate the wrapping div. But I always try to test the code I provide. So I made this demo to prove it to them.
So, umm, have I entered the twilight zone or am I dreaming right now? pinches self OUCH!
I tried that demo in Firefox, IE and Chrome and both methods return the same value. Firebug says zero! I rebooted my computer and I even changed the code a bit (removed the height function) and tried it with jQuery 1.3.2 and it still worked! I know hidden elements USED to return a zero value. Even this SO Answer is giving the advice I would have!
So I guess my question is… did I miss something or are we giving bad advice?
Looking at the jQuery 1.4.2 and 1.3.2 source code, it actually performs this automatically when you call
width()orheight()on a hidden element. It sets the following attributes:Then it gets the width/height, and restores the old values of the attributes.
So there is no need to change the attributes yourself – jQuery will handle it for you.
<Edit>
This will allow you to get the dimensions of a hidden element. However, it won’t work when the element is contained within another hidden element – you’ll get a height of 0. In that case you’d need another solution, possibly like this answer.
</Edit>
Here are the relevant bits of the source code from 1.4.2: