如何将数值传递给jQuery .css()?

时间:2011-01-26 09:44:01

标签: javascript jquery string type-conversion concatenation

我刚开始使用jQuery(实际上是Javascript),我觉得缺乏严格的打字就开始咬我了。

我需要将'123px''#123'等值传递给jQuery的.css(),如果我动态生成字符串,它就无效。

所以字符串连接是用+完成的。

'123' + 'px' 有效。
123 + 'px' 不会。
123.toString() + 'px' 也没有!

为什么呢?传递字符串+数字连接在其他地方似乎工作。这与jQuery有关吗? 那么,如何从数值和.css()的texual后缀/前缀创建字符串?

示例: http://jsbin.com/ebiro4

3 个答案:

答案 0 :(得分:3)

'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

答案 1 :(得分:2)

某些CSS属性(如width()height())具有专用的jQuery方法,这些方法接受数字参数并转换为px

对于其他人,您应该尝试连接字符串以避免意外结果。例如,在您的jsbin中,您尝试连接'#'080,实际上80的值为零,因此您最终得到'#80'这是一个有效的十六进制颜色代码。

答案 2 :(得分:1)

实际上您需要使用123..toString(),因为Javascript将123.toString()解释为浮点值。您需要做的第一件事是创建一个123.的浮点数,它等于123.0,然后将其转换为字符串。