【问题标题】:jQuery Variable with .css() concatenation issue?带有 .css() 连接问题的 jQuery 变量?
【发布时间】:2012-08-30 19:34:11
【问题描述】:

我正在尝试更改模糊按钮的 CSS。我怀疑这可能是一个串联问题,但我无法弄清楚我做错了什么。这是我的代码...

HTML

<input type="text" value="blue" id="textinput">
<button>Button</button>
<span id="color">red</span>

CSS

button {
 background-color:blue;
 background-image: -webkit-linear-gradient(top, white 0%, black 100%);    
}

jQuery

$("#textinput").blur(function () {
     setTimeout(function () {
          endColor = $("#textinput").val();
          $('button').css({ 
              'background-color' : endColor
              'background-image' : '-webkit-linear-gradient(top, #309ACB 0%,' + endColor + '100%)'       });
     }, 500);
});​

FIDDLE 链接

http://jsfiddle.net/krishollenbeck/p2jah/20/

当我删除渐变 CSS 时它工作正常。所以我猜我连接变量是错误的。但是我已经尝试了多种方法,但似乎无法弄清楚。这可能是非常明显的事情。

还要注意。我正在使用 webkit 渐变,所以在 chrome 或 safari 中进行测试。提前感谢您的帮助。

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    您在保存颜色的变量和百分比字符串之间缺少 空格

    '-webkit-linear-gradient(top, #309ACB 0%,' + endColor + ' 100%)'
                                                            ^
                                                            |
                                                            +-- Here
    

    调试这种情况的一个好方法是使用console.log 来查看连接字符串的结果。例如,在这种情况下,您会得到 red100% 而不是 red 100%

    恕我直言,一种不太容易出错的替代方法是使用String.format()。这样,您可以(更)清楚地看到您是否遗漏了什么:

    '-webkit-linear-gradient(top, #309ACB 0%, {0} 100%)'.format(endColor)
    

    注意部分浏览器不支持该功能,但可以使用thispollyfill 来定义。

    【讨论】:

    • 是的,就是这样。我一直在看这个半小时,并没有把它捡起来。有时只需要第二双眼睛。非常感谢。
    • @KrisHollenbeck:不客气。另一种不易出错的方法是使用format。例如:'-webkit-linear-gradient(top, #309ACB 0%, {0} 100%)'.format("red")。这样,您就可以轻松查看空格的位置。
    • 我以前从未使用过 .format() .. 感谢您提供的信息。我什至不知道这是 jQuery 库的一部分。
    • 不是。它是纯 JavaScript,尽管有些浏览器不支持它。但是,您可以轻松地创建它stackoverflow.com/a/1038930/140816
    【解决方案2】:

    您缺少逗号和空格(请参阅 Joao 的回答)

    $("#textinput").blur(function () {
         setTimeout(function () {
              endColor = $("#textinput").val();
              $('button').css({ 
                  'background-color' : endColor, // < here        -> this way too               v here
                  'background-image' : '-webkit-linear-gradient(top, #309ACB 0%,' + endColor + ' 100%)'       });
         }, 500);
    });​
    

    【讨论】:

    • 谢谢.. 我之前确实有逗号。那是我的复制错误。在我的小提琴乱搞时,我忘了把它加回去。然而,空白实际上是导致问题的原因......
    猜你喜欢
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多