Domanda

Questa è probabilmente una domanda jQuery davvero semplice, ma non ho potuto rispondere dopo 10 minuti nella documentazione, quindi...

Ho un elenco di caselle di controllo e posso ottenerle con il selettore 'input[type=checkbox]'.Voglio che l'utente sia in grado di fare clic tenendo premuto il tasto Maiusc e selezionare una serie di caselle di controllo.Per fare ciò, devo ottenere l'indice di una casella di controllo nell'elenco, in modo da poter passare quell'indice a .slice(start, end).Come ottengo l'indice quando l'utente fa clic su una casella?

È stato utile?

Soluzione

Il seguente selettore dovrebbe funzionare anche in jQuery: input:checkbox.

È quindi possibile stringare il file :gt(index) E :lt(index) filtri insieme, quindi se vuoi le caselle dalla quinta alla settima, dovresti usare input:checkbox:gt(4):lt(2).

Per ottenere l'indice della casella di controllo attualmente cliccata, basta usare $("input:checkbox").index($(this)).

Altri suggerimenti

Questa è una soluzione rapida, ma darei a ciascuna casella di controllo un ID univoco, magari con un suggerimento sull'indice, in questo modo:

<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" />

È quindi possibile ottenere facilmente l'indice:

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

Grazie per la risposta, Samjudson.

Dopo ulteriori sperimentazioni, ho scoperto che si può usare anche solo $(':checkbox') per selezionarli.È interessante che tu possa usare il file .slice() per ottenere l'intervallo, ma hai anche la possibilità di farlo nel selettore con :gt E :lt.Trovo la sintassi di .slice() per essere più pulito rispetto all'utilizzo dei filtri di selezione, però.

Devo dire che non mi piace tanto la soluzione di Ryan Duffield, perché richiede modifiche al markup e implica la ripetizione del codice.

@Gorgapor:Immagino di dover prendere le domande un po' meno alla lettera a volte.:-) Ho pensato che fossi costretto a richiedere una sorta di indice.Penso che scoprirai che, man mano che usi jQuery di più, di solito non hai bisogno di fare questo genere di cose.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top