2011-03-08 99 views
2

在我的代码中,offset()对于从ajax或load()方法加载的元素总是返回0,0 - 任何想法?获取jQuery偏移量()在加载Ajax的内容上工作的问题

做作示例代码:

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

你能提供一个jsfiddle或jsbin的例子吗? – 2011-03-08 16:38:22

+0

可能你应该尝试在'load'函数之外获得'offset()' – 2011-03-08 16:44:08

+0

@TheSuperTramp:虽然我也建议尝试这个,但文档说在HTML插入后应该触发回调。 DOM *应该*准备就绪。 – 2011-03-08 16:46:18

回答

4

从根本上说,当然,offset确实工作与阿贾克斯负载的内容:http://jsbin.com/eqofo4这将是非常,非常,奇怪的,如果它没有,因为基本上没有办法知道,一旦有新内容已加载到DOM中,它来自哪里。

所以这个问题必须是,为什么它不在你的页面上工作?我们不能回答这个问题从给定的信息,但我们可以推测:

  • 你有一个不同 DIV ID为你的页面,具有0上仰视,别的地方,0偏移?
  • 内容是否隐藏?因为文档说:

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

0

我也有过类似的问题,检查与offset().top新加载的元素的位置显示,我的问题是与元素之后不使用clear: both;。 也许它会帮助别人。

0

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