jquery获取元素位置,offset()错误的值

时间:2015-07-17 19:53:44

标签: jquery window offset

Jquery DOC说相对于文档的offset(),我看到很多帖子都是这样使用的。实际上这是错误的。

#foo {
  position:relative;
}

#bar {
  position:absolute;
  left:16;
  right:16;
}

<div id="foo">

    <div id="bar"> 

    <div>
</div>

var fooOffset= $("#foo").offset();
var barOffset= $("#bar").offset();

结果在Chrome中:

foo offset: 300, 280;
bar offset: 0, 100

相对于文档,foo偏移是正确的。 但是条形偏移(0,100)?它从何而来? 如果它相对于位置父项,则应为(16,16)。 如果它与文档相关,则应为(300 + 16,280 + 16)。

有什么可以帮我解决的吗?我想要做的是找出相对于窗口的位置,如:

var y = $("#bar").offset().top - $(window).scrollTop;

感谢。

1 个答案:

答案 0 :(得分:0)

您正在定义没有单位的leftright属性(px%等)。所以:

#bar {
  position:absolute;
  left:16;
  right:16;
}

应该是:

#bar {
  position:absolute;
  left:16px;
  right:16px;
}

检查this DEMO

注意:我定义了widthheightborder,以便您了解正在发生的事情。 right属性也没有任何效果,因为您也定义了left。也许您想要top代替right;)