2009-12-29 4 views
0

J'ai une table contenant des radiobuttons (c'est-à-dire 3x3 grille) et je veux quand je choisis l'un d'entre eux contenant le radiobutton pour changer de couleur. À la suite de cette example Je l'ai faitJQuery et RadioButtons question

<table class="table-name"> 
<tr> 
    <td> 
     <span>Some text</span> 
     <input type="radio" name="some-name" /> 
    </td> 
    <td> 
     <span>Some text</span> 
     <input type="radio" name="some-name" /> 
    </td></tr> 
</table> 

et le javascript

$(':radio').change(function() {   
    $('.color-1').removeClass('color-1');  
    var $td = $(this).parent('td'); 
    if (this.checked) {    
     $td.addClass('color-1'); 
    } else {       
     $td.removeClass('color-1'); 
    } 
}); 

cela fonctionne bien sur Firefox. mais sur Internet Explorer, il colore le précédemment sélectionné. Si je sélectionne 1,1, il reste blanc mais quand je sélectionne 1,2, alors 1,1 devient bleu et ainsi de suite.

Des idées?

+0

Avec la version .click, je ne pense pas que vous ayez besoin de la vérification "this.checked" car l'élément déclenchant l'événement est toujours coché, n'est-ce pas? – Rich

Répondre

3

IE (toutes les versions) ont une implémentation vraiment buggée de l'événement onChange sur checkboxes et radio buttons. Vous devez utiliser l'événement onClick si vous souhaitez offrir un comportement cross-browser solide. Pour plus d'informations, voir this link.

0

apparemment cela peut être résolu avec l'utilisation

$(':radio').click(function() ... 

au lieu du .Modification. au moins en termes de compatibilité avec IE. Quelqu'un a une idée pourquoi le changement échoue ou très probablement ce que je fais mal?