This gives me the position of some element from the left edge of the main window:
$(\'#bar\').offset().left;
If that element is situated in
Position within a div relative to its parent:
In my case, when scroll changed the calculated offset also changed and it shouldn't so i ended up using pure javascript which is quicker anyway...
element.get(0).offsetTop
Other variation like Left is also possible element.get(0).offsetLeft
Conclusion
element.offset().top or position() are not optimal for position relative cases.
Use the position() method.
$('#bar').position().left;
offsetLeft = $('#bar').position().left;
offsetTop = $('#bar').position().top;
It's simple enough: get the offset of the element and substract the offset of its parent.
var elem = $("#bar");
var offset = elem.offset().left - elem.parent().offset().left;