L'un des problèmes était que vous aviez le checked
sur le span entourant la case à cocher supérieure et l'étiquette, et nous avons lié un gestionnaire d'événements au span, donc checked
restera toujours checked
sur la travée.
J'ai déplacé les gestionnaires d'événements vers la case à cocher à la place et j'ai mis un peu d'ordre dans le code. Bien que je ne pense pas qu'il y ait un problème à construire vos propres attributs sur des éléments HTML, par exemple un attribut checked sur un élément span (je pense que la validation stricte XHTML échoue avec eux), je ne sais pas si c'est considéré comme une bonne pratique de le faire.
Je vois que vous utilisez ASP.NET, d'après la manipulation des ID - vous pouvez utiliser le côté serveur. <%= myControl.ClientID %>
pour obtenir l'identifiant modifié à rendre dans le HTML envoyé au client.
Exemple de travail ici
$(function() {
$('#rptOzel_ctl00_rptOzelHastalar_ctl00_cbOzelKurumHastasi').unbind('click');
$('#rptOzel_ctl00_rptOzelHastalar_ctl00_cbOzelKurumHastasi').click( function() {
var cbs = $('table input:checkbox');
if($(this).is(':checked')){
cbs.each(function() { $(this).attr('checked', true); });
}
else{
cbs.each(function() { $(this).attr('checked', false); });
}
});
});
EDIT :
En réponse à votre commentaire, vous avez plusieurs options pour résoudre le clientid. Si vous écrivez votre jQuery dans la page aspx, alors vous pouvez simplement utiliser
$('#<%= cbOzelKurumHastasi.ClientID %>')
à la place de
$('#rptOzel_ctl00_rptOzelHastalar_ctl00_cbOzelKurumHastasi')
Si vous avez votre jQuery dans un fichier script externe, vous pouvez mettre ceci dans votre page aspx
<script type="text/javascript">
var cbOzelKurumHastasi = '#<%= cbOzelKurumHastasi.ClientID %>';
</script>
et ensuite utiliser la variable dans votre fichier script externe
$(function() {
$(cbOzelKurumHastasi).unbind('click');
$(cbOzelKurumHastasi).click( function() { ...
Pour d'autres options, consultez cette question et cette réponse. Comment empêcher ASP.NET de changer les identifiants afin d'utiliser jQuery ?