Question

C'est probablement une question jQuery très simple, mais je n'ai pas pu y répondre après 10 minutes dans la documentation donc...

J'ai une liste de cases à cocher et je peux les obtenir avec le sélecteur 'input[type=checkbox]'.Je souhaite que l'utilisateur puisse cliquer sur Maj et sélectionner une série de cases à cocher.Pour ce faire, j'ai besoin d'obtenir l'index d'une case à cocher dans la liste, afin de pouvoir transmettre cet index à .slice(start, end).Comment obtenir l'index lorsque l'utilisateur clique sur une case ?

Était-ce utile?

La solution

Le sélecteur suivant devrait également fonctionner dans jQuery : input:checkbox.

Vous pouvez ensuite enchaîner le :gt(index) et :lt(index) filtres ensemble, donc si vous voulez les cases 5 à 7, vous utiliserez input:checkbox:gt(4):lt(2).

Pour obtenir l'index de la case actuellement cliquée, utilisez simplement $("input:checkbox").index($(this)).

Autres conseils

C'est une solution rapide, mais je donnerais à chaque case à cocher un identifiant unique, peut-être avec un indice d'index, comme ceci :

<input id="checkbox-0" type="checkbox" />
<input id="checkbox-1" type="checkbox" />
<input id="checkbox-2" type="checkbox" />
<input id="checkbox-3" type="checkbox" />
<input id="checkbox-4" type="checkbox" />

Vous pouvez alors facilement obtenir l’index :

$(document).ready(function() {
  $("input:checkbox").click(function() {
    index = /checkbox-(\d+)/.exec(this.id)[1];
    alert(index);
  });
});

Merci pour la réponse, Samjudson.

Après de nouvelles expérimentations, j'ai découvert que vous pouvez même utiliser simplement $(':checkbox') pour les sélectionner.C'est intéressant que vous puissiez utiliser le .slice() fonction pour obtenir la plage, mais vous avez également la possibilité de le faire dans le sélecteur avec :gt et :lt.Je trouve la syntaxe de .slice() pour être plus propre que d'utiliser les filtres de sélection, cependant.

Je dois dire que je n'aime pas autant la solution de Ryan Duffield, car elle nécessite des modifications du balisage et implique la répétition du code.

@Gorgapor :Je suppose que je dois parfois prendre les questions un peu moins littéralement.:-) Je pensais que vous étiez obligé d'exiger une sorte d'index.Je pense que vous constaterez cependant qu'à mesure que vous utilisez davantage jQuery, vous n'avez généralement pas besoin de faire ce genre de chose.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top