2011-10-12 3 views
5

J'ai un sélecteur dans une cellule de table. La ligne du tableau a une couleur, donc en utilisant CSS, je peux changer l'arrière-plan de la liste déroulante à la même couleur en utilisant background-color:inherit; Cependant, il change la couleur de la boîte entière avec toutes les options.Changer la couleur de l'option sélectionnée seulement

Est-il possible de changer la couleur de l'option sélectionnée seulement, sinon avec CSS peut-être avec l'aide de jQuery?

+2

Pouvez-vous nous montrer votre code HTML et css? Fyi ... style boîtes de sélection est terriblement difficile! –

+2

Probablement pas, non; les navigateurs semblent avoir un accès limité au style des éléments 'select'. –

Répondre

4

Tout est possible avec jQuery :) Vous devriez essayer ceci:

$('.mySelect').change(function() { 
    $(this).find('option').css('background-color', 'transparent'); 
    $(this).find('option:selected').css('background-color', 'red'); 
}).trigger('change'); 

Et voici un live demo

Espérons que ça aide!

+0

La démo en direct ne fonctionne pas sous Chrome/OSX –

+0

La réponse de Ronn prend en compte l'élément sélectionné lorsqu'il est inactif et lorsqu'il est cliqué et développé. – Ohiovr

0

Vous devriez être capable de le faire avec jQuery. Je peux me tromper (voir le commentaire de David Thomas), mais essayez:

$("option[value='myValue']").css('background-color', 'red'); 
2

J'ai été capable de le faire en réglant d'abord la couleur d'arrière-plan de l'élément SELECT sur ce que je voulais, ce qui a eu pour résultat que toutes les options étaient de cette couleur. Ensuite, j'ai fait toutes les options d'un schéma de couleurs spécifiques. Enfin, j'ai fait de l'option sélectionnée la même couleur que l'élément SELECT, de sorte que l'option affiche la même couleur dans la liste déroulante.

$.each($('select'), function(i,v) { 

    theElement = $(v); 
    theID = theElement.attr('id'); 

    // Set the SELECT input element to green background with white text 

    theElement.css('background-color', 'green'); 
    theElement.css('color', 'white'); 

    // Set all the options to another color (note transparant will show the green) 

    $('#'+theID).find('option').css('background-color', 'white'); 
    $('#'+theID).find('option').css('color', 'black'); 

    // Finally set the selected option to the same values as the SELECT element 

    $('#'+theID).find('option:selected').css('background-color', 'green'); 
    $('#'+theID).find('option:selected').css('color', 'white'); 
}); 
+1

la réponse était là-bas depuis le 12 octobre 2011! D'ailleurs, c'était accepté. – Ozzy

Questions connexes