【发布时间】:2012-03-23 17:09:10
【问题描述】:
当我尝试获取元素在 $(document).ready(function() { }); 中的位置时它在 chrome 中为 position.top 提供了不同的(不正确的)值,但在 Firefox 中是正确的。根据获得位置的元素,它会偏移 15-45px。
我有一个视口中的项目列表溢出:隐藏,我想获取每个项目的位置。
<div class='viewport'>
<div class='item'>Item Info</div>
<div class='item'>Item Info</div>
<div class='item'>Item Info</div>
<div class='item'>Item Info</div>
</div>
.viewport { position:relative; overflow: hidden; }
.item { margin-left: 10px; }
当我执行$(".viewport .item").each(function() { var pos = this.position(); }); 时,它会给出值,但它们是错误的。
更奇怪的是,如果我从控制台执行此操作(页面加载完成后),它将返回正确的值。似乎不正确的值只出现在 $(document).ready 期间。
有没有办法解决这个问题,所以我仍然可以在 doc.ready 期间进行定位?
【问题讨论】:
-
改用
this.offset().top; -
除了
$(this).position()而不是this.position()的一个语法错误之外,我在firefox和chrome中都可以正常工作 -
确保两个浏览器的缩放都使用
ctrl + 0100% 视图 -
@Trevor:你外面有没有
margin-top的父div? -
@Trevor:尝试使用
$(window).load(.....)而不是document.ready
标签: jquery google-chrome webkit position document-ready