当我提醒值.position().left
时,它在Chrome上返回0。与其他浏览器一起返回实际的数字。为什么会发生?Chrome中的jQuery位置问题
回答
基于Webkit的浏览器(如Chr ome和Safari)仅在图像完全加载后才能访问图像width
和height
属性。其他浏览器只要加载DOM就可以访问这些信息(它们不需要完全加载图像以了解它们的大小)。
所以,如果你有图片在您的网页,使用基于WebKit浏览器,你应该在$(window).load
事件触发后访问offset
信息,而不是$(document).ready
事件之后。
有时候即使这样也行不通。另一种选择是手动设置您的CSS图像大小。 – 2011-11-10 19:31:19
显然webkit只能访问window.load之后的文本宽度和高度属性。似乎很愚蠢的是,即使Internet Explorer可以正确使用它。我认为最后一个错误是webkit。 – 2014-09-23 21:54:45
有时Webkit可能太快,但它经常在jQuery中处理。您可以使用类似的东西进行调试:
var v, elem = $('.myElement');
window.setTimeout(function() {
v = elem.position().left;
console.log(v);
if (v) {
return false;
}
window.setTimeout(arguments.callee, 1);
}, 1);
这将检查是否以及何时该位置可用。如果您在无穷远处记录“0”,则position().left
“永远不可用”,您需要在其他地方进行调试。
太好了,谢谢大卫的帮助。 – goksel 2010-02-02 18:19:07
谢谢 - 这也是为什么'jQuery.offset()'返回不正确(非零)值的原因 - 它看起来像我的CSS定位导致Chrome两次(或其他)布局文档。调用'offset'过早地返回元素的位置,因为它们没有CSS。 – Justin 2011-01-27 12:48:50
+1我昨天有这个问题。即使在简单的'$(function(){console.log($('img')。position()。top);});'中,位置也是不正确的,'但是在稍后的点击事件中使用相同的代码时是正确的。 – andyb 2011-03-27 08:57:22
我有同样的问题..
我固定它使用:.offset().left
代替。但请注意,是不一样的: http://api.jquery.com/offset/
.position().left
曾在Chrome在一些测试中,我所做的,使用 比大卫类似的方法(该值可用,因为 第一次尝试)。
在我的“真正的”应用程序未能甚至 阅读点击事件的位置(这可以消除任何负载 速度问题)。 一些意见(在其他论坛)说可能与 有关,使用display:inline-block
。但我不能 使用inline-block
重现问题。所以它可能是 是另一回事。
通过阅读http://api.jquery.com/position/的评论,有几种方法可以解决这个问题。 我找到工作的一个是
Ajaho [主持人]:这个插件功能修复了Chrome的
jQuery.fn.aPosition = function() {
thisLeft = this.offset().left;
thisTop = this.offset().top;
thisParent = this.parent();
parentLeft = thisParent.offset().left;
parentTop = thisParent.offset().top;
return {
left: thisLeft-parentLeft,
top: thisTop-parentTop
};
};
为我的问题创作奇迹......谢谢! – 2015-12-11 12:09:24
或许有点过时与错误的位置问题 因为从2010年,但这个问题的日期我在Chrome中定位问题的技巧:
$(window).load(function(){
p = $('element').offset();
// et cetera
});
使用jQuery(窗口).load()而不是jQuery的(文件)。就绪()
我用这个功能来纠正它。
function getElementPosition(id) {
var offsetTrail = document.getElementById(id);
var offsetBottom = 0;
var offsetTop = 0;
while (offsetTrail) {
offsetBottom += offsetTrail.offsetBottom;
offsetTop += offsetTrail.offsetTop;
offsetTrail = offsetTrail.offsetParent;
}
return {
bottom: offsetBottom,
toppos: offsetTop
};
}
对我来说,它的工作仅由body标签
它执行它加载后的代码一切
<body>
<div>content</div>
<div class='footer'>footer</div>
.
.
.
<script type='text/javascript>
$(document).ready(function(){
var footer_position = $(".footer").offset().top;
console.log(footer_position);
});
</script>
</body>
- 1. 问题jQuery在IE7中的位置
- 2. 阅读位置指示器 - Chrome问题
- 3. 固定位置背景 - Chrome问题
- 4. Chrome和jQuery问题
- 5. Firefox中的JQUERY Galleria css位置对齐问题。在Chrome中工作正常
- 6. jquery - 在Firefox中获取位置问题
- 7. Modernizr和jQuery的Chrome问题
- 8. 与Chrome的JQuery问题
- 9. Chrome上的JQuery Ajax问题
- 10. Chrome和Firefox jQuery的问题
- 11. Firefox,Chrome CSS定位问题
- 12. jQuery的位置片断问题
- 13. 简单的django jquery位置问题
- 14. 在Chrome中使用jquery-droppable的问题
- 15. IE/Chrome中的jQuery/CSS高度问题
- 16. IE和Chrome中的jquery克隆问题
- 17. jQuery slideToggle在Safari和Chrome中的问题
- 18. Chrome中的jquery fileupload插件问题
- 19. IOS4中的位置问题
- 20. jQuery Ajax和setInterval Chrome问题
- 21. Chrome显示问题与JQuery
- 22. JQuery UI Datepicker IE位置问题
- 23. jquery背景位置y + = 1问题
- 24. Jquery DIalog覆盖和位置问题
- 25. jQuery UI拖放鼠标位置问题
- 26. SimpleModal jQuery插件位置问题
- 27. jQuery警报箱固定位置问题?
- 28. jQuery幻灯片插件位置问题
- 29. Jquery拖放问题与位置,帮助!
- 30. div位置问题在克隆jquery
这样闭幕前将JavaScript代码文档中准备好,请发布更多的代码,特别是你要调用'position'的元素,或者是一些HTML/CSS来查看可能出现的问题。 – 2010-01-31 20:02:15