1

我在用:

var element = $(this).parents("tr:first");

if (element.css("background-color")=="black)")
    element.animate({ backgroundColor: "white" }, 1000);
else
    element.animate({ backgroundColor: "black" }, 1000);

要更改背景颜色,但比较似乎失败,我也尝试过:

if (element.css("background-color")==rgb(0,0,0))

但是 if 条件似乎每次都返回 false ?

4

2 回答 2

3

这取决于您的浏览器及其支持的内容。

一些浏览器会返回rgb(0,0,0),但大多数较新的浏览器支持 rgba 并返回rgba(0,0,0,0)。其他浏览器可能返回完全不同的东西,谁知道呢?

试试这个Fiddle看看它是否可以工作,它适用于我在最新的 Chrome 中,但它可能不适用于所有浏览器。

var element = $(this).parents("tr:first");

if (element.css("background-color")==="rgba(0, 0, 0, 0)") {
    element.animate({ backgroundColor: "black" }, 1000);
}else{
    element.animate({ backgroundColor: "white" }, 1000);
}

此外,您的 if/else 语句有缺陷,缺少大括号!

由于检查浏览器返回的颜色不是很可靠,您应该考虑使用标志来代替

var element = $(this).parents("tr:first");
var flag    = element.data("flag");

if ( flag ) {
    element.animate({ backgroundColor: "black" }, 1000);
}else {
    element.animate({ backgroundColor: "white" }, 1000);
}

element.data("flag", !flag);

最后,jQuery 不支持没有插件或 jQuery UI 的动画颜色。

于 2012-07-18T18:38:18.110 回答
1

返回值是 rgb 格式,字符串应使用引号:

if(element.css("background-color") == "rgb(0, 0, 0)")
于 2012-07-18T18:37:04.127 回答