2010-03-11 44 views
2

在某些瀏覽器中定位元素時出現問題。我正在使用找到的jQuery自動完成here。包含自動完成值的div應直接位於文本框下方,並完美排列。該代碼將通過使用產生的左財產留下的div屬性的CS $(textbox).offset();在某些瀏覽器中,在某些計算機上不工作的jQuery偏移量()

未包裝的代碼,試圖解決我的問題,我得在這之後:

var a = $(textbox).offset(); 
element.css({ 
    width: typeof e.width == "string" || e.width > 0 ? e.width : $(textbox).width(), 
    top: a.top + textbox.offsetHeight, 
    left: a.left 
}).show(); 

這似乎是它應該可以工作,並且它可以在Firefox中工作。它不適用於IE8,Chrome。頂端的位置總是正確的,但有時候div離左邊太遠,或者離右邊太遠。

在不同的計算機上(全部使用Windows XP),它在IE8下工作......這怎麼可能?我也在我的Mac OS 10.5上測試過它。它適用於Firefox,但不適用於Safari。

我禁用了插件,更改了屏幕分辨率,重新調整了大小的窗口......它在一些地方有時會不一致。

任何人都可以想到我失蹤的東西嗎?

UPDATE: 我已經重新制定我的代碼使用與jQuery 1.4.2和jQuery UI 1.8rc3提供的自動完成。它仍然是壞的,同樣的問題。請幫忙!

UPDATE 2: 請參閱this related question。 jQuery UI自動完成中斷,因爲它使用偏移量。有沒有人有工作?

下面是從絆倒了UI自動完成功能的JavaScript:

.css({ top: (offset.top + this.element.height) + 'px', left: offset.left + 'px' }) 

如果改爲top: '0px', left: '0px'它工作正常,但顯然是定位在錯誤的地方。

+0

x64 vs x32渲染引擎? – 2010-03-11 16:39:42

+0

@Josh:不確定你的意思。所有電腦都有32位處理器和32位窗口xp – 2010-03-11 17:01:08

+0

這種「偏移」與「位置」的東西總是讓我困惑。如果這是我的代碼,我會嘗試:(A)使用「position()」而不是「offset()」和(B)看看在將有問題的HTML封裝在「position:relative」div時會發生什麼。 – Pointy 2010-03-11 17:04:14

回答

1

我終於明白髮生了什麼事。我有一個CSS規則定義的車身寬度:

body { 
    width: 900px; 
} 

有一次,我把它改爲width: 100%;,寬900px的DIV包圍的整個頁面,它的工作如預期。

它看起來像IE使用身體元素來測量offset()的頂部和左側值,但使用窗口邊緣來絕對定位項目時測量頂部和左側距離。

我希望這個答案將節省別人我已經在這個浪費了所有的時間...

1

我遇到了類似的問題,終於發現了float屬性影響relative,使得relative格設置無法在Internet穩定Explorer 8,但在Firefox中表現良好。

相關問題