Chrome background-color проблема: "прозрачный" не допустимое значение? - PullRequest
1 голос
/ 14 апреля 2011

У меня есть элемент div, который нужно скрывать, когда не задан цвет фона. Итак, я пришел с этим простым заявлением jquery:

$(function() {

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

});

все хорошо работает в Firefox, он скрывает оболочку, когда для bg-color не установлено значение. Но в chrome и safari кажется, что он не распознает прозрачное как допустимое значение ..?

Я пытался установить значение «ноль» или «неопознано», но безрезультатно.

У кого-нибудь есть подсказка?

Ответы [ 2 ]

0 голосов
/ 08 июля 2012

Chrome возвращает цвет rgba rgba(0, 0, 0, 0) вместо transparent. Посмотрите эту демонстрацию и метод ее проверки ( demo ).

if ( /transparent|rgba\(0, 0, 0, 0\)/.test( $('.colorpicker').css('background-color') )
{
  $(this).find('.colorpicker-wrapper').css('display','none');
}
0 голосов
/ 14 апреля 2011

Ваша проблема - несоответствие в jQuery.Обычно, когда цвет фона не установлен, значение устанавливается в пустую строку ("").См .:

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

d.style.backgroundColor всегда будет возвращать "" как для Firefox, так и для Chrome.Но при использовании функции jQuery css() jQuery переводит ее в значение по умолчанию.

Я предлагаю использовать: $('.colorpicker')[0].style.backgroundColor == ""

...