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 № 1checkbox
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/.