jQuery offset () не работает в некоторых браузерах, на некоторых компьютерах

У меня проблема с позиционированием элемента в определенных браузерах. Я использую найденное автозаполнение jQueryВот, Элемент div, содержащий значения для автозаполнения, должен находиться непосредственно под текстовым полем и располагаться идеально. Код устанавливает свойство css left для div, используя свойство 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 прерывает автозаполнение, потому что он использует смещение. У кого-нибудь есть работа вокруг?

Вот javascript из функции автозаполнения пользовательского интерфейса, который отключается:

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

Если он изменен наtop: '0px', left: '0px' он работает нормально, но, очевидно, расположен не в том месте.

Ответы на вопрос(2)

Ваш ответ на вопрос