我刚开始使用jQuery(实际上是Javascript),我觉得缺乏严格的打字就开始咬我了。
我需要将'123px'
或'#123'
等值传递给jQuery的.css()
,如果我动态生成字符串,它就无效。
所以字符串连接是用+
完成的。
'123' + 'px'
有效。
123 + 'px'
不会。
123.toString() + 'px'
也没有!
为什么呢?传递字符串+数字连接在其他地方似乎工作。这与jQuery有关吗?
那么,如何从数值和.css()
的texual后缀/前缀创建字符串?
答案 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
,然后将其转换为字符串。