/ / Esiste un modo per eseguire una query su una raccolta precedentemente popolata da un'espressione jquery? - jquery

C'è un modo per interrogare una collezione precedentemente popolata da un'espressione jquery? - jquery

Invece di eseguire più volte la stessa espressione jquery, durante il popolamento di una variabile $(document).ready:

var checkboxes = $("#<%=tbl.ClientID %> input[id*="chk"]");

Qui, sto memorizzando l'elenco di caselle di controllo che terminano con "chk" all'interno della tabella con l'id di "tbl"nelle caselle di controllo variabili.

Successivamente, desidero disabilitare un pulsante se nessuna delle caselle di controllo è selezionata.

Sto tentando di fare qualcosa del tipo:

btn.disabled = $(checkboxes:checked").length == 0;

ma non sta succedendo niente. Idee?

risposte:

0 per risposta № 1

checkbox nel tuo codice c'è un oggetto jQuery. Stai cercando di usarlo come una stringa.

Puoi prendere quell'elenco di caselle di spunta che sonogià nell'oggetto jQuery e quindi filtralo fino a un risultato che è solo quelli attualmente controllati e quindi controlla la lunghezza in questo modo:

btn.disabled = checkboxes.filter(":checked").length === 0;

In alternativa, è possibile eseguire un selettore completamente nuovo da zero dove si combina ":checked" con il tuo selettore precedente.


1 per risposta № 2

Se hai già una raccolta jQuery, puoi filtrarla. Puoi usare il $.fn.filter metodo per escludere / includere gli elementi nella nuova raccolta in modo condizionale o utilizzare qualcosa di simile $.fn.find passare una nuova selezione per abbinare tutti i bambini contro.

Leggi di più online all'indirizzo http://api.jquery.com/category/traversing/.