jQuery .css («left») возвращает «auto» вместо фактического значения в Chrome - PullRequest
12 голосов
/ 25 ноября 2010

У меня есть элемент div с заданным значением left и top, без абсолютной позиции , и я хочу прочитать значения left и top, используя jQuery.

Использование $("#MyId").css("left") дало ожидаемый результатв браузере IE (IE8), но в Chrome он вместо этого возвратил «auto», хотя значения явно записаны в стиле элемента.

Вот пример теста: http://jsfiddle.net/qCDkb/2/

Обратите внимание наразница между IE и Chrome.

Кроме того, это хорошо работает в jQuery 1.4.2 и «проваливается» в jQuery 1.4.3 и выше.

Любые идеи приветствуются.: -)

Ответы [ 5 ]

14 голосов
/ 10 декабря 2012

Попробуйте $("your selector").position().top;

13 голосов
/ 25 ноября 2010

Странное поведение для jQuery. Но вы можете использовать нативные методы javascript для получения значений css:

$("#Panel1")[0].style.left

Это выражение вернет соответствующее свойство css.

10 голосов
/ 25 ноября 2010

Как обсуждалось в комментариях, установка left в auto для position: static звучит как-то правильно, поскольку left не имеет смысла в контексте.

Относительно того, почему Chrome и IE возвращают разные значения: .css() предоставляет единый шлюз для вычисляемых функций стилей браузеров, но не унифицирует способ, которым браузеры фактически вычисляют стиль. Браузеры нередко по-разному решают подобные проблемы.

Относительно того, почему jQuery 1.4.2 и 1.4.3 делают это по-разному, я не знаю точно, но это есть в примечаниях к выпуску 1.4.3 :

Почти весь модуль CSS был переписан с акцентом на расширяемость. Теперь вы можете создавать собственные плагины CSS, которые расширяют функциональные возможности, предоставляемые .css () и .animate ().

0 голосов
/ 16 сентября 2013

Я знаю, что это старый пост, но я столкнулся с той же проблемой и подумал, что я бы предложил пару решений. Кажется, что эта проблема не характерна для Chrome, так как я смог воспроизвести и в Firefox.

Мне удалось решить это одним из двух способов. Либо поместите ваши стили CSS в тот же файл, что и ваш HTML, вместо того, чтобы использовать отдельный файл CSS. ИЛИ, вызовите функцию внутри window.onload. Похоже, что значения недоступны для браузера, пока все не загружено, ЕСЛИ стили находятся во внешней таблице стилей.

Надеюсь, это полезно.

0 голосов
/ 01 июля 2011

добавить

position: absolute;

или

position: relative;

к элементу, который вы используете слева

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...