11

I was trying to get a list of element's height value but it was returning 0.
I've done some research and saw that in order get element's height, that element must be visible.
But I want to check its height when it's hidden. If its height is bigger than some value use some functions then make it visible. Is there any way to do this?

I mean:

  1. Check hidden element's height.
  2. If it has OK value make it visible.
  3. If it doesn't have required value do some functions.
  4. Make it visible.
Shadow The GPT Wizard
  • 66,030
  • 26
  • 140
  • 208
Malixxl
  • 525
  • 2
  • 9
  • 19

3 Answers3

17

You can show the element get the height and then hide it, visually you will not see any difference.

var height = $('elementSelector').show().height();
$('elementSelector').hide();
if(height != <<HeightToCompare>>){
    //Code here
}
//Finally make it visible
$('elementSelector').show();

Demo

ShankarSangoli
  • 69,612
  • 13
  • 93
  • 124
6

One way is to clone the object, position the clone far outside the viewport, make it visible, measure the clone, then destroy it.

So you have:

<div id="maybe" style="display: none;">
  Something
</div>

Since you're using jQuery, you'd do something like this:

$('#maybe')
  .clone()
  .attr('id','maybe_clone') // prevent id collision
  .css({                    // position far outside viewport
    'position': 'absolute',
    'left': '-1000px'
  });

if( $('#maybe_clone').show().height() > 200 ) {
  $('#maybe').show();
}

$('#maybe_clone').remove();       // housekeeping
Ken Redler
  • 23,863
  • 8
  • 57
  • 69
  • +1, that or temporarily position absolutely and move the element itself. Since the element is hidden to begin with, it will not disturb the markup. – Frédéric Hamidi Feb 02 '12 at 18:27
  • If `display:none` is applied to a parent element, this won't work. A fix would be injecting the clone outside it's original parent: `.clone().appendTo('body')`. – Slava May 01 '15 at 14:45
  • thanks to give me clue to calculate hidden div height – Shantaram Tupe Dec 07 '17 at 13:55
0

Position the object so it is visible to the browser, but not the user: jQuery: Get height of hidden element in jQuery

Community
  • 1
  • 1
Nathan Hase
  • 649
  • 4
  • 11