2013-09-04 3 views
0

Для простого примера: я хотел бы изменить цвет фона для каждого параметра в раскрывающемся списке. Каждый параметр должен иметь цвет фона, соответствующий его значению.Выбранный плагин: измените фон опций в зависимости от его значения

E.g.

$('...').css('background', 'red') 

Я попытался выбрать .active-result, но он просто не сработает.

Любые идеи?

$(function() { 

    var $select = $(document.getElementById('foo')), 
     colors = ['red', 'yellow', 'green', 'purple', 'silver'] 
    ; 

    for(var i = 0; i < 5; i++) { 
    $select[0].add(new Option('Color: ' + colors[i], colors[i])); 
    } 

    $select[0].options[2].selected = true; 

    $select.chosen(); 

}); 

Link to jsbin

+0

Почему вы делаете '$ (document.getElementById ('Foo'))' ?! Откуда вы это узнали? У вас есть jQuery, используйте его: '$ ('# foo')'. –

+0

'$ select [0]' получит элемент DOM. Зачем ты это делаешь? Опять же, у вас есть jQuery, используйте его: '$ select.append (...);'. –

ответ

2

Итак, вы хотите, чтобы установить цвет элементов? Попробуйте сделать это, когда вы их создаете, и добавьте их в <select>.

Кроме того, у вас есть jQuery, используйте его! Не используйте неправильную настройку jQuery и собственных методов DOM.

$(function(){ 
    var $select = $('#foo'), // Don't use getElementById 
     colors = ['red', 'yellow', 'green', 'purple', 'silver']; 

    for(var i = 0, len = colors.length; i < len; i++){ // Don't hard-code the length 
     var $option = $('<option></option>', { // jQuery can create elements 
      text: 'Color: ' + colors[i], 
      value: colors[i] 
     }).css('background-color', colors[i]); // set the color 

     $select.append($option); // Append the element using jQuery 
    } 

    $select.val(colors[2]); // jQuery can also set the "selected" option 

    $select.chosen(); 
}); 

DEMO: http://jsbin.com/otASETo/3

+0

Извините, я не хотел обидеть ваши чувства jQuery. :) Я только что сделал так много jQuery, я думал, что попытаюсь узнать некоторые родные js, а также просто использовать jQuery для хромых вещей, таких как несколько свойств css. Я не думал, что Chosen будет копировать каждый атрибут из исходного элемента, но это было так, и я должен попробовать. Вместо этого я попытался применить стили непосредственно к выбранным сгенерированным элементам без везения ... Спасибо за вашу помощь! – estrar

+0

@estrar: Добро пожаловать, рад, что смогу помочь. Я не знал, что плагин скопирует стили, я просто попробовал посмотреть, что произойдет. :-) Да, я согласен, что вы должны знать, как использовать собственные методы DOM, но в этом случае, давайте сделаем это простым. Сложно читать код со смешанными стилями. –

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