【问题标题】:How to pass numerical values to jQuery's .css()?如何将数值传递给 jQuery 的 .css()?
【发布时间】:2011-06-15 17:49:47
【问题描述】:

我刚开始使用 jQuery(实际上是一般的 Javascript),我觉得缺乏严格的输入开始困扰我。

我需要将'123px''#123' 之类的值传递给jQuery 的.css(),如果我动态生成字符串,它将无法正常工作。

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

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

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

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

【问题讨论】:

    标签: javascript jquery string type-conversion concatenation


    【解决方案1】:

    一些 CSS 属性,例如 width()height(),有专门的 jQuery 方法,它们接受数字参数并转换为 px

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

    【讨论】:

    • 谢谢,谢谢! widthheight 是我想要的。另外,我忘记了示例中的08080。只是等待超时接受。顺便说一句,我仍然不明白将宽度和高度与连接值一起使用的限制(因为它们在其他情况下工作)。很奇怪。
    【解决方案2】:

    '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 因为我永远猜不到123..toString()。但是第二个不适用于 jQuery。我也试过''.concat(123,'px'),什么也没试过。看这个例子,'#' + 080'#' + '080' 的作用下不起作用。
    • @CamiloMarting:这是因为前面的零。这是一个八进制值。 Firebug 抛出这个:08 is not a legal ECMA-262 octal constant
    • @Camilo - 我只是想知道你会在什么情况下得到080。如果它是一个数字,那么它应该是80
    • & @Riegel:傻瓜……180 件作品。应该猜到了。在示例中使用它,但实际问题是宽度和高度,并根据 BoltClock 的回答解决。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-10
      • 2013-06-25
      • 1970-01-01
      • 1970-01-01
      • 2015-06-29
      • 1970-01-01
      • 1970-01-01
      • 2013-07-27
      相关资源
      最近更新 更多