Comment réinitialiser la couleur d’arrière-plan après sa modification par jQuery?

D’abord, un jsfiddle … http://jsfiddle.net/therocketforever/jYba3/11/

// Highlight selected linker link & set all others to default. $('a.linker').click(function(){ $(this).addClass('selected'); $(this).parent('li').siblings().find('.selected').removeClass('selected'); // Selects a random colour from the 'colors' array by getting a random value // between 0 and the length of the color array. rand = Math.floor(Math.random()*colors.length); $(this).css("background-color", colors[rand]); 

Maintenant une question,

Premièrement, ce code fonctionne presque exactement comme je le voudrais. Un utilisateur clique sur un lien, la couleur sélectionnée est appliquée au texte du lien, supprimé des autres et l’arrière-plan du lien est défini sur une couleur aléatoire du tableau. de couleurs. Cool.

Ce que j’aimerais savoir, c’est … Comment pourrais-je faire en sorte que la couleur d’arrière-plan définie de manière aléatoire soit supprimée des liens non sélectionnés (c’est-à-dire que seul le lien avec la classe .selected a la couleur d’arrière-plan.)

CRÉDIT SUPPLÉMENTAIRE

Bonas pointe si la même couleur d’arrière-plan n’est jamais utilisée deux fois de suite. (c.-à-d. si vous cliquez sur un paramètre en jaune, cliquez sur deux pour afficher toute autre couleur que le jaune.

Cela répondra à toutes vos exigences (bonus inclus).

 $(document).ready(function(){ // Colours for links var colors = ["#fff766","#66cef5","#bd7ebc","#66cc66"]; $("a.linker").click(function(){ var $this = $(this).addClass("selected"); $this.parent('li').siblings().find('.selected') .removeClass('selected').css("background-color", ""); var num = $this.data("colorNum"), rand = num; while (num === rand) { rand = Math.floor(Math.random()*colors.length); } $this.css("background-color", colors[rand]) .data("colorNum", rand); }); }); 

Utilisez simplement la méthode .css() de jQuery pour supprimer la couleur d’arrière-plan:

 $(this).addClass('selected') .parent('li').siblings().find('.selected') .removeClass('selected').css('background-color', ''); 

écrivez juste ceci:

 $(this).css({'background-color':''});