Замість того, щоб виконувати один і той же вираз jquery кілька разів, я "заповнюю змінну протягом $(document).ready
:
var checkboxes = $("#<%=tbl.ClientID %> input[id*="chk"]");
Тут я зберігаю список прапорців, які закінчуються на "chk" всередині таблиці з ідентифікатором "tbl
"у змінних полях.
Пізніше я хочу відключити кнопку, якщо не встановлено прапорці.
Я намагаюся зробити щось на кшталт:
btn.disabled = $(checkboxes:checked").length == 0;
але нічого не відбувається. Ідеї?
Відповіді:
0 для відповіді № 1checkbox
у вашому коді - об’єкт jQuery. Ви намагаєтесь використовувати його як рядок.
Ви можете взяти той список прапорців, які євже в об’єкті jQuery, а потім відфільтруйте його до результату, який є саме тими, що зараз перевіряються, а потім перевірте довжину такого, як це:
btn.disabled = checkboxes.filter(":checked").length === 0;
Або ви можете запустити абсолютно новий селектор з нуля, де ви поєднуєте ":checked"
з попереднім селектором.
1 для відповіді № 2
Якщо у вас вже є колекція jQuery, ви можете її відфільтрувати. Ви можете використовувати $.fn.filter
метод умовно виключати / включати елементи в новій колекції або використовувати щось подібне $.fn.find
пройти новий відбір, який відповідає всім дітям проти.
Детальніше читайте в Інтернеті за адресою http://api.jquery.com/category/traversing/.