Проблема с цветом фона Chrome: «прозрачный» недопустимое значение?

#google-chrome #transparent #background-color

#google-chrome #прозрачный #цвет фона

Вопрос:

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

 $(function() {

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

});
  

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

Я пытался установить значение ‘null’ или ‘unidentified’, но безрезультатно..

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

Ответ №1:

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

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

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

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

Ответ №2:

Chrome возвращает цвет rgba rgba(0, 0, 0, 0) вместо transparent . Ознакомьтесь с этой демонстрацией и методом ее проверки (демо).

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