jquery ne parvient pas à mettre à jour css de couleur de fond

J’ai un générateur de grid, il utilise Javascript et jQuery pour générer des blocs dans une grid qui sont affichés avec HTML et CSS. J’essaie de configurer un bouton qui changera le comportement de survol des blocs (en particulier, changer leur couleur de fond). Je suis incapable de faire cela et je ne sais pas pourquoi mon code ne fonctionne pas. Je vais le copier et le coller ici et je m’excuse, c’est très long. Vous pouvez le voir en action ici: http://codepen.io/anon/pen

HTML

      Odin #2 by Max Pleaner     

Welcome to my Odin Project #2 page. This is me showing off my basic JS and jQuery skills. If you move your mouse through the blocks you can see frogs come out of hiding. If you press the clear button below you can select a new number of blocks to fill the same space.

froggy

CSS

 body { background-color: grey; } p { color: aqua; } #square_holder { width: 960px; } .block { background-color: green; display:inline-block; border: 1px solid black; width: 232px; height: 232px; } .block:hover { background-color: blue; //background-image:url("http://soffr.miximages.com/javascript/Q6w802v.jpg"); background-size: contain; } 

JS

 $(document).ready(function(){ draw_grid(4); $('#button').click(function(){ get_input(); }); $('#button2').click(function(){ get_input(); $('.block:hover').css("background-image", "none").css("background-color", get_random_color()); }); }); var draw_grid = function (blocks) { var totalno = Math.pow(blocks, 2); var dimension = (960 - 1 -(blocks * 2))/blocks; for(var i = 0; i < totalno; i++){ $("#square_holder").append("
"); }; $(".block").css("height", dimension).css("width", dimension); } var get_input = function(){ alert('Do you want to change the number of boxes?'); $('#square_holder').empty(); var user_entry = prompt("What number do you choose?"); alert("Watch in awe as the grid fills ..... "); draw_grid(user_entry); } var get_random_color = function() { var letters = '0123456789ABCDEF'.split(''); var color = '#'; for (var i = 0; i < 6; i++ ) { color += letters[Math.round(Math.random() * 15)]; } return color; };

Vous devez utiliser un background , pas background-color . Extrait de la page MDN pour background-image :

La propriété CSS background-image définit une ou plusieurs images de fond pour un élément. Les images sont dessinées sur des couches de contexte d’emstackment successives, les premières spécifiées étant dessinées comme si elles étaient les plus proches de l’utilisateur. Les bordures de l’élément sont ensuite tracées dessus et la couleur d’arrière-plan est dessinée en dessous.

Cela se traduit par une déclaration d’image d’arrière-plan (même si aucune) s’assoira au-dessus de la couleur d’arrière-plan. Par conséquent, si vous définissez background au lieu de background-color , toutes les autres déclarations spécifiques à la propriété seront remplacées.