這不是一個簡單的任務,因爲你需要考慮到其他可能的顏色格式代表相同的值,例如:
rgb(0,128,128)
rgba(0, 128, 128, 1)
#008080 //hey, why not, who said your color will be always defined in rgb?
*#fc0 //different color to show alternative format, #ffcc00 == #fc0
而且,瀏覽器不以一致的方式行事。例如,即使在CSS中使用了十六進制值,Firefox和Chrome始終會返回rgb()字符串,但IE會返回已定義的CSS值。
如果你想確保你的目標正確的顏色,你應該把它轉換成一個共同的格式,然後進行比較。
function toHex(color)
{
var m = /rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)/.exec(color);
return m ? '#' + (1 << 24 | m[1] << 16 | m[2] << 8 | m[3]).toString(16).substr(1) : color;
}
function unhighlight() {
$('div').each(function() {
if(toHex($(this).css("background-color")) == toHex("rgb(255,204,0)")){
$(this).css("background-color","");
}
});
}
注:我toHex
功能不會做的唯一的事情是要考慮到3位十六進制顏色格式,所以你應該稍微修改它。