jquery beginner: change background on click

℡╲_俬逩灬. 提交于 2019-12-11 03:03:11

问题


I'm trying to change the background of an element on click based on the current color.

Here's the relevant html:

<div id="rect" style="height: 100px; width:300px; background: red">
</div>

and my jquery attempt:

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

I'm always getting a yellow box; the 'true' condition never fires.

What am I doing wrong?


回答1:


UPDATE

I found one exception, as expected, in IE. To account for IE exception, simply use jQuery's .browser Method. I've added this to below example code.

Try:

$("#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');}
});

As I explained in my comments, jQuery breaks down each part of CSS property "background", thus you need to call the exact Property you want, in this case background-color. Also, jQuery returns color values as RGB style, thus red would be rgb(255, 0, 0). Now this doesn't stop .css("background" from being useful to SET background, just remember, just like css, background will override all other background-direct properties.

Apparently someone made a jsFiddle example for me. (Thank you Sushanth)

See it Here

Also @RyanKinal make a good point in his comment "jQuery may not even normalize colors to a specific format, so different browsers may return colors in different formats. It's something to be aware of." I've not tested ...

CSS "red" as returned via different browsers:

  • Firefox 17: "rgb(255, 0, 0)"
  • Chrome 24: "rgb(255, 0, 0)"
  • Opera 12: "rgb(255, 0, 0)"
  • Safari 5: "rgb(255, 0, 0)"
  • IE 7-9: "red"


来源:https://stackoverflow.com/questions/13687963/jquery-beginner-change-background-on-click

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!