2011-03-08 57 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響應後,使其或其父項可見,然後計算偏移量。