Док говорит, что «jQuery может одинаково интерпретировать CSS и DOM форматирование свойств из нескольких слов», но на самом деле он делает это посредством грубых и готовых хаков, которые не всегда ведут себя предсказуемо.
В частности, если вы предоставляете DOM-стиль camelCaseName
, он сначала попытается получить доступ к объявлению встроенного стиля как style.camelCaseName
. Затем, если это не удается (как правило, потому что стиль не был установлен встроенным), он возвращается к попытке getComputedStyle
с camelCaseName
, преобразованным в hyphen-separated-name
(*). Вычисленный стиль - это не то же самое, что объявленный стиль: браузер может разрешать различные относительные объявления в вычисленном стиле, например, преобразовывать длину в пиксельные единицы.
Однако обратное не имеет места! Если вы предоставите CSS-стиль hyphen-separated-name
, он сразу перейдет к коду вычисленного стиля (*), не пытаясь преобразовать его в camelCaseName
и взглянуть на встроенный стиль.
Не думаю, что я бы хотел положиться на это поведение ... оно пахнет немного глючно для меня. Если вы можете сохранить объявление встроенного стиля от элемента, который вы хотите измерить, вы должны быть в состоянии гарантировать, что вы всегда получите вычисленный стиль обратно независимо от того, какой тип имени вы используете. Но опять же, jQuery не дает вам этого в качестве документального обещания. Такова природа попытки скрыть сложную модель за, казалось бы, простым интерфейсом «делай, что имею в виду».
(*): за исключением IE, где нет функции getComputedStyle
, поэтому он прибегает к странному и хрупкому соединению currentStyle
, runtimeStyle
и изменению документа, чтобы попытаться получить вычисленный стиль.