在我的代码中,offset()
始终为从ajax或load()
方法加载的元素返回0,0 - 任何想法?
受控示例代码:
jQuery("#div1").load(url, function() {
var offset = jQuery("#some-div-in-new-content").offset();
// offset is always 0,0
});
我已经验证jQuery("#some-div-in-new-content")
找到了对象 - 其他属性都很好。
答案 0 :(得分:3)
当然,基本上,offset
使用加载了ajax的内容:https://output.jsbin.com/gixoxojomu。如果没有,那将非常非常非常奇怪,因为一旦将新内容加载到DOM中,它基本上没有办法告诉它。来自哪里。
所以问题必须是,为什么它不在您的页面上工作?我们无法从给定的信息中肯定地回答这个问题,但这里有一些可能的原因:
some-div-in-new-content
,在页面的其他地方,有0,0偏移量。jQuery不支持获取隐藏元素的偏移坐标或者考虑在body元素上设置边框,边距或填充。
答案 1 :(得分:0)
我遇到了类似的问题,并通过offset().top
检查新加载的元素的位置,发现我的问题是在元素之后没有使用clear: both;
。
也许它会帮助别人。
答案 2 :(得分:0)
在我的情况下,Loaded HTML的父级被隐藏,因此偏移量为零。因此,请确保在加载HTML响应后使其或其父级可见,然后计算偏移量。