jquery初学者:点击后更改背景

我正在尝试根据当前颜色更改单击元素的背景。

这是相关的html:

和我的jquery尝试:

  $("#rect").click(function() { if ($(this).css('background') == 'red') { $(this).css('background','blue');} else {$(this).css('background','yellow');} }); 

我总是得到一个黄色的盒子; ‘真实’的条件永远不会发生。

我究竟做错了什么?

UPDATE

在IE中我发现了一个例外,正如预期的那样。 要考虑IEexception,只需使用jQuery的.browser方法。 我已将此添加到下面的示例代码中。

尝试:

 $("#rect").click(function() { var red = $.browser.msie ? "red" : "rgb(255, 0, 0)"; if ($(this).css('background-color') == red) { $(this).css('background','blue');} else {$(this).css('background','yellow');} }); 

正如我在评论中解释的那样,jQuery分解了CSS属性“background”的每个部分,因此您需要调用所需的确切属性,在本例中为background-color 。 此外,jQuery将颜色值返回为RGB样式,因此红色将为rgb(255, 0, 0) 。 现在这不会停止.css("background"SET背景有用,请记住,就像css一样, background会覆盖所有其他background-direct属性。

显然有人为我做了一个jsFiddle示例。 (谢谢Sushanth )

在这里看到它

另外@RyanKinal在他的评论中提出了一个很好的观点“jQuery甚至可能无法将颜色标准化为特定格式,因此不同的浏览器可能会返回不同格式的颜色。这是需要注意的事情。” 我没有测试过 ……

通过不同浏览器返回的CSS“red”:

  • Firefox 17:“rgb(255,0,0)”
  • Chrome 24:“rgb(255,0,0)”
  • 歌剧12:“rgb(255,0,0)”
  • Safari 5:“rgb(255,0,0)”
  • IE 7-9:“红色”