Как передать числовые значения в jQuery .css ()? - PullRequest
2 голосов
/ 26 января 2011

Я только начинаю с jQuery (и вообще с Javascript) и чувствую, что отсутствие строгой типизации начинает меня кусать.

Мне нужно передать значения, такие как '123px' или '#123', в jQuery .css(), и это не работает, если я генерирую строки динамически.

Таким образом, конкатенация строк выполняется с +.

'123' + 'px' работает.
123 + 'px' нет.
123.toString() + 'px' тоже нет!

Почему? передача строки + число конкатенаций в другом месте, кажется, работает. Это связано с jQuery?
Итак, как я могу создать строку из числового значения и текстового суффикса / префикса для .css()?

Пример: http://jsbin.com/ebiro4

Ответы [ 3 ]

3 голосов
/ 26 января 2011

'123' + 'px' работает

123 + 'px' также должно работать, но делать это как => '' + 123 + 'px'

123.toString() + 'px' должно быть => 123..toString() + 'px'

Последнее немного сложнее.ECMA- / Javascripts ожидает полных квалифицированных десятичных знаков в этом месте.123.0.toString() во многом совпадает с ярлыком ...

#80 никогда не бывает числовым значением в Javascript.

'#' + 080 не работает, потому что 080 являетсявосьмеричное значениеБросок Firebug: 08 is not a legal ECMA-262 octal constant.

2 голосов
/ 26 января 2011

Некоторые свойства CSS, такие как width() и height(), имеют специальные методы jQuery, которые принимают числовые аргументы и преобразуются в px.

. Для других вам следует попытаться объединить строки * 1007.* во избежание неожиданных результатов.Например, в вашем jsbin вы пытаетесь объединить '#' и 080, что на самом деле 80 с незначительным нулем, так что вы получите '#80', который не является допустимым шестнадцатеричным цветовым кодом.

1 голос
/ 26 января 2011

На самом деле вам нужно использовать 123..toString(), поскольку Javascript интерпретирует 123.toString() как значение с плавающей запятой. Первое, что вам нужно сделать, это создать число с 123., равным 123.0, и затем преобразовать его в строку.

...