2 votes

sélecteurs multiples jquery

Ceci :

$('input.people').attr('checked', false).filter('[name=toddS]').attr('checked', true);

sélectionnera une case à cocher avec la classe des personnes et le nom toddS tout en décochant toutes les autres cases.

Comment ajouter un autre nom au filtre ? J'ai essayé plusieurs combinaisons différentes et rien ne fonctionne. Voici ce que j'ai :

$('input.people').attr('checked', false).filter('[name=toddS], [name=gwenD]').attr('checked', true);

1voto

Nick Craver Points 313913

Vous pouvez passer une fonction dans .attr() comme ceci :

$('input.people').attr('checked', function() {
  return this.name == 'toddS' || this.name == 'gwenD';
});

Si vous devez en ajouter plus tard, vous pouvez utiliser quelque chose qui fonctionne pour plusieurs valeurs, par exemple $.inArray() comme ceci :

$('input.people').attr('checked', function() {
  return $.inArray(this.name, ['toddS', 'gwenD']) != -1;
});

0voto

alex Points 186293

Vous pourriez utiliser une fonction à cet endroit pour sélectionner ceux que vous voulez seulement.

$('input.people')
   .removeAttr('checked')
   .filter(function() {
       return ($(this).attr('name') === 'toddS' || $(this).attr('name') === 'gwenD');
    })
    .attr('checked', 'checked');

J'ai aussi utilisé removeAttr() au lieu de le fixer à false . Je n'ai pas vérifié ce que fait jQuery en le réglant sur false mais d'un point de vue HTML, être décoché devrait signifier l'absence de cet attribut.

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