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)ます。他のブラウザは完全に異なるものを返すかもしれません、誰が何を知っていますか?

このフィドルを試して、動作するかどうかを確認してください。最新の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は、プラグインまたはjQueryUIなしでの色のアニメーション化をサポートしていません。

于 2012-07-18T18:38:18.110 に答える
1

戻り値はrgb形式であるため、文字列には引用符を使用する必要があります。

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