Как подсчитать, сколько флажков выбрано на странице с помощью jQuery

Я хочу подсчитать, сколько флажков на моей странице выбрано с помощью jQuery. Я написал следующий код:

      var numberOfCheckboxesSelected = 0;
      $(':checkbox').each(function(checkbox) {
          if (checkbox.attr('checked'))
              numberOfCheckboxesSelected++;
      });

Однако мои ошибки кода с сообщением "Объект не поддерживает это свойство или метод" в третьей строке.

Как подсчитать, сколько флажков выбрано на моей странице?

Ответы

Ответ 1

jQuery поддерживает псевдо-селектор :checked.

var n = $("input:checked").length;

Это будет работать и для радиокнопок, и для флажков. Если вам просто нужны флажки, но также есть переключатели на странице:

var n = $("input:checkbox:checked").length;

Ответ 2

Попробуйте это (чтобы не считать любые выбранные переключатели):

var numberOfCheckboxesSelected = $('input[type=checkbox]:checked').length; 

Ответ 3

Первый аргумент, переданный обратному вызову в each, является индексом, а не элементом. Вы должны использовать this или второй аргумент:

$(':checkbox').each(function(idx, checkbox) {
      if (checkbox.attr('checked'))
          numberOfCheckboxesSelected++;
});

Более того, более простой способ сделать это - выбрать только проверенные элементы с помощью :checked, а затем проверить выбор length свойство:

var numberOfCheckboxesSelected = $('input:checkbox:checked').length;

Ответ 4

$("input:checked").length

это вернет количество отмеченных флажков.