2014-01-19 46 views
1

我一直在努力爭取更多的小時數比我關心的承認。我試圖使用jQuery Offset在頁面上放置一些元素,但即使我傳遞了SAME偏移值,渲染後的值在屏幕上也會大不相同。我的jQuery代碼看起來是這樣的:JQuery膠印返回2個不同的結果

init: function (element, options) { 
    var that = this, 
    $field = $(element), 

    ... 

    var offset = $field.offset(); 
    that.ghostElement.offset({ top: offset.top, left: offset.left }); 
    that.suggestionsContainer.offset({ top: offset.top + $field.height(), left: offset.left }); 

但是HTML呈現爲這樣的:

<span class="autosuggest-ghost" style="top: 48px; left: 30px;"></span> 

<div class="autosuggest-suggestions" style="top: 262px; left: 263.5px; display: block;">  
    <ul> 
     <li><a blah...</a></li> 
    </ul> 
</div> 

有人會認爲,自動提示,建議將是頂部:48 + 40,左:30但對於有些理由有很大的。任何幫助將不勝感激。

編輯


HTML元素緊挨着對方指示,不具備不同的父母然而, autosuggest-ghost有一個位置:absolute,而autosuggest-suggestions的位置是:absolute。這是因爲自動建議建議需要浮動在頁面上的其他元素的頂部。

+0

'offset()'是相對於窗口的,你確定你不是在尋找'position()'嗎? – adeneo

+0

這兩個元素是否真的是一個接一個地出現在你的問題中,還是真正的文檔結構不同?我懷疑他們有不同的父元素,'autosuggest-ghost'在相對或絕對定位的元素內。 –

回答

0

offset()與文檔相關,所以數字是準確的,但以奇怪的方式表示......這一切都取決於您如何設置其餘元素和CSS。 Position()是相對於父對象的。但是如果你不完全確定你的CSS發生了什麼,那麼這仍然會導致一些問題。