433 votes

Activer / désactiver les cases à cocher

J'ai ce qui suit:

 $(document).ready(function()
{
    $("#select-all-teammembers").click(function() {
        $("input[name=recipients\\[\\]]").attr('checked', true);
    });                 
});
 

Je voudrais le id="select-all-teammembers" quand on clique pour basculer entre cochée et non cochée. Des idées? qui ne sont pas des dizaines de lignes de code?

785voto

Frédéric Hamidi Points 123646

Tu peux écrire:

 $(document).ready(function() {
    $("#select-all-teammembers").click(function() {
        var checkBoxes = $("input[name=recipients\\[\\]]");
        checkBoxes.prop("checked", !checkBoxes.prop("checked"));
    });                 
});
 

Avant jQuery 1.6, quand nous avions seulement attr () et non prop () , nous écrivions:

 checkBoxes.attr("checked", !checkBoxes.attr("checked"));
 

Mais prop() a une meilleure sémantique que attr() lorsqu'il est appliqué aux attributs HTML "booléens", donc il est généralement préféré dans cette situation.

236voto

2astalavista Points 7092
//this toggles the checkbox, and fires its event if it has    

$('input[type=checkbox]').trigger('click'); 

72voto

Normadize Points 319

Je sais que c'est vieux, mais la question était un peu ambigu dans cette bascule peut signifier chaque case doit basculer son état, quelle qu'elle soit. Si vous avez 3 vérifié et à 2 pas cochée, puis basculement ferait les 3 premiers de manière incontrôlée, et les 2 derniers vérifié.

Pour cela, aucune des solutions ici, le travail qu'ils font toutes les cases ont le même état, plutôt que d'alterner chaque case de l'état. Faire $(':checkbox').prop('checked') sur de nombreuses cases retourne le ET logique entre tous .checked les propriétés binaires, c'est à dire si l'un d'entre eux n'est pas cochée, la valeur retournée est - false.

Vous devez utiliser .each() si vous souhaitez activer chaque case de l'état plutôt que de les rendre tous égaux, par exemple

   $(':checkbox').each(function () { this.checked = !this.checked; });

Notez que vous n'avez pas besoin d' $(this) à l'intérieur, le gestionnaire comme l' .checked propriété existe dans tous les navigateurs.

16voto

kst Points 853

Voici une autre manière que vous voulez.

 $(document).ready(function(){   
    $('#checkp').toggle(
        function () { 
            $('.check').attr('Checked','Checked'); 
        },
        function () { 
            $('.check').removeAttr('Checked'); 
        }
    );
});
 

13voto

matt burns Points 6072

Je pense qu'il est plus simple de déclencher un clic:

 $("#select-all-teammembers").click(function() {
    $("input[name=recipients\\[\\]]").trigger('click');
});                 
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X