Chrome背景颜色问题:“透明”不是有效值?

时间:2011-04-14 13:25:31

标签: google-chrome transparent background-color

我有一个div元素,只要没有背景颜色集就需要隐藏它。所以我想出了这个简单的jquery语句:

$(function() {

if ($('.colorpicker').css('background-color') == 'transparent')
{
$(this).find('.colorpicker-wrapper').css('display','none');
}

});

在Firefox中一切运行良好,当没有为bg-color设置值时,它会隐藏包装器。但是在chrome和safari中它似乎并不认为透明是有效值。?

我已尝试将值设置为“null”或“unidentified”,但无济于事。

任何人都有任何线索?

2 个答案:

答案 0 :(得分:0)

您的问题是jQuery的不一致。通常,如果未设置背景颜色,则将值设置为空字符串("")。参见:

var d = document.createElement("div");
return d.style.backgroundColor

d.style.backgroundColor将始终为firefox和chrome返回""。但是,当使用jQuery css()函数时,jQuery会将其转换为默认值。

我建议使用:$('.colorpicker')[0].style.backgroundColor == ""

答案 1 :(得分:0)

Chrome会返回rgba(0, 0, 0, 0)而不是transparent的rgba颜色。查看this demo以及测试它的方法(demo)。

if ( /transparent|rgba\(0, 0, 0, 0\)/.test( $('.colorpicker').css('background-color') )
{
  $(this).find('.colorpicker-wrapper').css('display','none');
}