让jQuery offset()处理加载ajax的内容时遇到问题

时间:2011-03-08 16:32:23

标签: jquery ajax load offset

在我的代码中,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")找到了对象 - 其他属性都很好。

3 个答案:

答案 0 :(得分:3)

当然,基本上,offset 使用加载了ajax的内容:https://output.jsbin.com/gixoxojomu。如果没有,那将非常非常非常奇怪,因为一旦将新内容加载到DOM中,它基本上没有办法告诉它。来自哪里。

所以问题必须是,为什么它不在您的页面上工作?我们无法从给定的信息中肯定地回答这个问题,但这里有一些可能的原因:

  • 也许你有一个不同的 div,其ID为some-div-in-new-content,在页面的其他地方,有0,0偏移量。
  • 也许隐藏了内容。从文档:
      

    jQuery不支持获取隐藏元素的偏移坐标或者考虑在body元素上设置边框,边距或填充。

答案 1 :(得分:0)

我遇到了类似的问题,并通过offset().top检查新加载的元素的位置,发现我的问题是在元素之后没有使用clear: both;。 也许它会帮助别人。

答案 2 :(得分:0)

在我的情况下,Loaded HTML的父级被隐藏,因此偏移量为零。因此,请确保在加载HTML响应后使其或其父级可见,然后计算偏移量。