在某些瀏覽器中定位元素時出現問題。我正在使用找到的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'
它工作正常,但顯然是定位在錯誤的地方。
x64 vs x32渲染引擎? – 2010-03-11 16:39:42
@Josh:不確定你的意思。所有電腦都有32位處理器和32位窗口xp – 2010-03-11 17:01:08
這種「偏移」與「位置」的東西總是讓我困惑。如果這是我的代碼,我會嘗試:(A)使用「position()」而不是「offset()」和(B)看看在將有問題的HTML封裝在「position:relative」div時會發生什麼。 – Pointy 2010-03-11 17:04:14