我在某些浏览器中定位元素时遇到问题。我正在使用此处找到的 jQuery 自动完成功能。包含自动完成值的 div 应直接位于文本框下方,并且完美对齐。代码通过使用生成的 left 属性设置 div 的 css left 属性$(textbox).offset();
在解压缩代码以尝试解决我的问题后,我得到了这个:
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。
我禁用了插件,更改了屏幕分辨率,重新调整了窗口大小......有时它在某些地方的工作方式不一致。
谁能想到我缺少的东西?
更新:我重新编写了代码以使用 jQuery 1.4.2 和jQuery UI 1.8rc3 提供的自动完成功能。还是坏了,同样的问题。请帮忙!
更新 2:请参阅此相关问题。jQuery UI 自动完成中断,因为它使用偏移量。有人有工作吗?
这是来自 UI 自动完成功能的 javascript 错误:
.css({ top: (offset.top + this.element.height) + 'px', left: offset.left + 'px' })
如果更改为top: '0px', left: '0px'
它可以正常工作,但显然定位在错误的位置。