Из-за атрибута "множественный" цвет фона меняется на серый

.selected_aq{
background:#47D6EB !important;
color : #fff;
}

<select id="abc" multiple="multiple">
<option value="Customer 1" class="selected_aq">Customer 1</option>
<option value="Customer 1" class="selected_aq">Customer 1</option>
</select >

 for (x=0;x<list.options.length;x++){
         if (list.options[x].selected){
             $(list.options[x]).addClass('selected_aq');
          }

Из-за атрибута "множественный" цвет фона меняется на серый, но только для последней выбранной "опции".

2 ответа

Решение

Вы можете использовать только CSS

select[multiple]:focus option:checked {
  background: #47D6EB linear-gradient(0deg, #47D6EB 0%, #47D6EB 100%);
  color : #fff;
}
<select id="abc" multiple="multiple">
  <option value="Customer 1" >Customer 1</option>
  <option value="Customer 2" >Customer 2</option>
  <option value="Customer 3" >Customer 3</option>
  <option value="Customer 4" >Customer 4</option>
  <option value="Customer 5" >Customer 5</option>
  <option value="Customer 6" >Customer 6</option>
</select >

Попробуйте выбрать несколько вариантов, удерживая кнопку Ctrl.

На самом деле вы устанавливаете этот серый цвет с background:#47D6EB в вашем классе selected_aq и вы уже устанавливаете этот класс для всех options, так что будет применяться ко всем вариантам.

И вам не нужен JavaScript для этого, вы можете сделать это с помощью CSS : флажок:

select[multiple]:focus option:checked {
  background: #47D6EB linear-gradient(0deg, #47D6EB 0%, #47D6EB 100%);
}

Демо - версия:

select[multiple]:focus option:checked {
  background: #47D6EB linear-gradient(0deg, #47D6EB 0%, #47D6EB 100%);
}
<select id="abc" multiple="multiple">
<option value="Customer 1" >Customer 1</option>
<option value="Customer 2" >Customer 2</option>
</select>

Для более подробной информации вы можете проверить:

Могу ли я раскрасить фон выделенных элементов в HTML-настройках только с помощью CSS?,

Другие вопросы по тегам