1

Is there a way to get $element.position() working for a hidden (i.e. display:hidden) element?

user1514042
  • 1,899
  • 7
  • 31
  • 57
  • jQuery does not support getting the position coordinates of hidden elements or accounting for borders, margins, or padding set on the body element. – Ravi Y Jan 29 '13 at 12:45
  • Makes sense, I just wanted a 'risk on me' type of solution. – user1514042 Jan 29 '13 at 12:49
  • 1
    If you know where the element is in your Dom tree, you could get position of its previous sibling or parent as required and then add the height/width of the said element to get your current position. However this may not be very easy in a fuildic layout. – Ravi Y Jan 29 '13 at 12:52
  • 1
    Just for the records: `display: hidden` is no valid css, either `display: none` or `visibility: hidden` – Simon Jan 29 '13 at 13:01

3 Answers3

2

Just try

mypos = $('#myelement').css({
  visibility: 'hidden',
  display: 'block'
}).position();
Simon
  • 7,182
  • 2
  • 26
  • 42
mr_app
  • 1,292
  • 2
  • 16
  • 37
2

You could try :

var pos = $element.show().position();
$element.hide();

Only in exceptional circumstances (some untimely interrupt by some process outside the current window/tab), will the element be momentarily rendered.

Beetroot-Beetroot
  • 18,022
  • 3
  • 37
  • 44
1

'display:none;' removes the element from the document so it does not have a position. You could try a quick 'display: block; visibility: hidden;', get the position, and hide it again.

Edit: This is explained on this question's page already: jquery: get the offset of hidden element

Community
  • 1
  • 1
DoXicK
  • 4,784
  • 24
  • 22
  • I can still see the element as part of the visual tree, showing and hiding causes a flicker. I know why it's disable but in my case it's absolute safe to measure the top and height for a hidden element – user1514042 Jan 29 '13 at 12:47
  • i know, it doesn't "remove" it from the document, but it does, as you noticed, remove it from the renderable elements. here is a better explanation and answer: http://stackoverflow.com/questions/5974323/jquery-get-the-offset-of-hidden-element – DoXicK Jan 29 '13 at 12:50