2015-07-28 4 views
2

У меня есть HTML5 <select> с несколькими детьми <option>, где каждый <option> имеет свои собственные цвета заднего и заднего плана. Это делается через CSS и достаточно просто.Изменение цвета SELECT на основе ВАРИАНТА Выбрано

Что я хотел бы сделать, так это поддерживать цвет <option> в <select> после того, как был выбран <option>. Например, предположим, что у меня есть это (я не использую CSS в простом примере, приведенном ниже, но в моей реальной среде я):

<select> 
    <option style="color:red">ABC</option> 
    <option style="color:blue" selected>DEF</option> 
    <option style="color:green">GHI</option> 
</select> 

Я хотел бы использовать CSS, чтобы как-то «передача» обратно и передними цветами выбранных <option> до <select>, так что цвет <select> всегда синхронизируется с цветом выбранного <option>. Если пользователь выбирает третий вариант в моем примере, он должен быть зеленым, если он выбран. Выбор первого варианта, и текст отображается красным. Когда изначально отображается <select>, он должен иметь цвета задней и переднего плана начального <option> (синий передний план, в приведенном выше примере).

Я могу сделать это через jQuery, но я бы предпочел использовать CSS, но я чувствую, что это, вероятно, невозможно.

+0

Интересный вопрос. Я не считаю, что это можно сделать только с помощью CSS. Тем не менее проверка, но JS или PHP, вероятно, будет вашим лучшим выбором. –

+0

@ tom-baxter создать jsFiddle с кодом –

+0

Как вам нужно обнаружить ** событие изменения ** элемента 'select', вам нужно javascript/jquery, я думаю. И далее Решение [Здесь] (http://stackoverflow.com/questions/15755770/change-text-color-of-selected-option-in-a-select-box) –

ответ

1

У меня есть решение. Я доволен предоставленным jsfiddle. Одно из предостережений состоит в том, что каждый <option> должен иметь цвет фона, установленный явно (он не может наследовать от <select>, так как <select> изменит свой фоновый цвет при изменении выбранных <option>).

UPDATE К сожалению, это «решение» работает только в Chrome и Opera. Так много для совместимости браузера.

https://jsfiddle.net/herm0xvb/1/

0

Вы должны вручную получить CLASS и цвет от выбранного элемента опции

$(document).ready(function(){ 
    $('select').change(function() { 
     var opt = $(this)[0].options[$(this)[0].selectedIndex]; 
    $(this)[0].style.backgroundColor = opt.style.backgroundColor; 
    $(this)[0].className = opt.className; 
    }); 
}); 
+0

Почему я не могу использовать .css() (кроме того, что он не работает)? Не .css() получить компьютерный стиль? –

+0

.css() не работает в моем браузере (firefox) :(dunno why .... https://jsfiddle.net/herm0xvb/2/ –

Смежные вопросы