2011-01-10 6 views
11

Во время работы с ползунком jQuery UI я в основном отлаживал хром. Мне нужно было сделать диапазон имеет предел, так что я бы захватить левую позицию одной из ручек, как так:Различия в расположении jQuery между Chrome (webkit) и Firefox

$el.css('left');

который дал бы мне левую позицию в процентах: 84%. Однако, когда я тестировал в Firefox, он возвращал значение в пикселях.

Кто-нибудь испытал это раньше? Основываясь на просмотре DOM в Firebug, Firefox распознает позиционное позиционирование на основе процентов, но, похоже, оно не возвращает это значение. Это поведение по умолчанию для Firefox? Это то же самое в IE?

+0

Хороший вопрос. Недавно я был удивлен, обнаружив, что css ('left') возвращает пиксели в Firefox, когда свойство было указано как процент (или ems). В конце концов, вы всегда можете получить значение пикселя, используя position(). Left. Однако не проверял его в Chrome. – harpo

+0

Я, я был удивлен, когда один из элементов просто выстрелил с экрана, когда я думал, что в основном это работает с этой функциональностью. Работа на MBP без VMWare или тому подобное, поэтому не может действительно протестировать IE прямо сейчас. – hellatan

+0

Это не отвечает на ваш вопрос, но обходным путем на основе jQuery является использование 'position' (http://api.jquery.com/position/), которое возвращает одинаковое значение (в пикселях) в каждом браузере. – Emmett

ответ

0

Я не считаю, что существуют какие-либо известные отличия для позиционирования с jQuery с последней версии 1.4.4.

1

Функция CSS() возвращает значение указанного Css собственности, сообщаемые в браузере. В результате, он специфичен для браузера и не должен использоваться при работе с длинами и позиционированием таким образом.

+0

Согласен, функция css() позволяет вам манипулировать или читать свойства css, а также (грустно) интерпретироваться по-разному для каждого браузера. Используйте функцию position(), если вы хотите, чтобы независимые данные и результаты браузера были независимыми. – Ivanhoe

0

использование $el.position().left; вместо :)

+0

Это может вернуть тот же результат, если вам не повезло. (на данный момент для меня) – Sascha

0

Я работал вокруг этого вопроса путем доступа к DOM напрямую, как это:

$el.get(0).style.left

возвращает значение% для FF, Chrome, Safari и IE9. (Не проверял его в Opera, хотя)

Смежные вопросы