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:“红色”