/ / Czy istnieje sposób na zapytanie do kolekcji, która była poprzednio wypełniona z wyrażenia jquery? - jquery

Czy istnieje sposób na zapytanie do kolekcji, która była poprzednio wypełniona z wyrażenia jquery? - jquery

Zamiast kilkukrotnie wykonywać to samo wyrażenie jquery, zapełniam zmienną podczas $(document).ready:

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

Tutaj przechowuję listę pól wyboru, które kończą się na "chk" w tabeli o identyfikatorze "tbl"w zmiennych polach wyboru.

Później chcę wyłączyć przycisk, jeśli żadne pole wyboru nie jest zaznaczone.

Próbuję zrobić coś takiego:

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

ale nic się nie dzieje. Pomysły?

Odpowiedzi:

0 dla odpowiedzi № 1

checkbox w twoim kodzie jest obiekt jQuery. Próbujesz użyć go jak ciąg.

Możesz wziąć tę listę pól wyboru, które sąjuż w obiekcie jQuery, a następnie odfiltrować go do wyniku, który jest właśnie tymi, które są obecnie sprawdzane, a następnie sprawdzić długość tego w następujący sposób:

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

Możesz też uruchomić zupełnie nowy selektor od zera, który łączysz ":checked" z poprzednim selektorem.


1 dla odpowiedzi nr 2

Jeśli masz już kolekcję jQuery, możesz ją odfiltrować. Możesz użyć $.fn.filter metoda w celu warunkowego wykluczenia / uwzględnienia elementów w nowej kolekcji lub użycia czegoś podobnego $.fn.find przekazać nowy wybór, aby dopasować wszystkie dzieci przeciw.

Czytaj dalej online na stronie http://api.jquery.com/category/traversing/.