2010-05-28 4 views
0

salut j'essaie de cocher/décocher toutes les cases à cocher qui n'ont pas de classe. C'est le code que j'ai obtenu mais il vérifie les cases de classe.décochez toutes les cases sauf celle avec une classe?

$(document).ready(function() { 
     $('#ctl00_ContentPlaceHolder1_repReceivers_ctl00_chxAll').click(
     function() { 
     if (!$("input[type='checkbox']").hasClass("testclass")) { 
      $("input[type='checkbox']").attr('checked', $('#ctl00_ContentPlaceHolder1_repReceivers_ctl00_chxAll').is(':checked')); 
     }}); 
    }); 

des idées où je vais mal?

EDIT
Ce sucent mais asp.net ajouter une durée autour de l'entrée des cases à cocher lorsque donné une CssClass, de sorte que la case à cocher lui-même n'obtenez pas la classe. J'ai essayé de faire comme vous dites mais comme .not (thecheckboxid) mais pas de chance.

EDIT CODE

<span class="testclass"><input id="ctl00_ContentPlaceHolder1_chxMale" type="checkbox" name="ctl00$ContentPlaceHolder1$chxMale" /></span> 
+0

Pouvez-vous publier le balisage pour une case à cocher (y compris l'intervalle)? –

+0

@Dejan - La réponse ci-dessous est mise à jour pour votre balisage :) –

+0

Ne fonctionne pas. Il ne décoche aucune case maintenant –

Répondre

3

Vous devez modifier votre code un peu, comme celui-ci (mis à jour pour la question mise à jour):

$(function() { 
    $('#ctl00_ContentPlaceHolder1_repReceivers_ctl00_chxAll').click(function() { 
    $(":not(.testclass) > input[type='checkbox']").attr('checked', this.checked); 
    }); 
}); 

Actuellement, vous êtes vérifier si la case à cocher correspond à la classe, vous voulez filtrer tous ceux sans la classe du lot que vous définissez la propriété checked sur. Il existe quelques méthodes pour le faire, mais :not() ou .not() sont les plus faciles ici. L'autre changement ci-dessus est que puisque vous êtes dans un gestionnaire d'événements pour la case _chxAll, vous pouvez utiliser this au lieu de répéter l'ID, il est plus court et plus rapide :) Avec cela, vous pouvez également utiliser la propriété DOM .checked.

+0

Wow ... Vous choisissez sérieusement '$ (this) .is (': checked')' sur 'this.checked' ...? – James

+0

@ J-P - Était affiner la réponse, a eu du mal à trouver la documentation de la propriété '.checked' ... Je n'utilise pas quelque chose à moins que je puisse fournir un lien vers le cas où il y a des questions :) –

1
$('input:checkbox').not('.testclass').attr('checked', $('#ctl00_ContentPlaceHolder1_repReceivers_ctl00_chxAll').is(':checked')); 
3

J'ai ajouté quelques améliorations de performances indispensables.

var inputs = $('input:checkbox').not('.testclass'); 

$('#ctl00_ContentPlaceHolder1_repReceivers_ctl00_chxAll').click(
    function() { 
     inputs.attr('checked', this.checked); 
    } 
); 
Questions connexes