Группы jQuery и переключателей

В jQuery я хотел бы выбрать все группы переключателей, в которых нет отмеченных кнопок.

Или, есть ли способ, которым я могу выбрать все группы переключателей и перебирать группы?

Я динамически добавляю N групп кнопок на страницу и не буду знать, какими будут названия групп переключателей.

Ответы

Ответ 1

Чтобы найти все группы радиостанций:

var radio_groups = {}
$(":radio").each(function(){
    radio_groups[this.name] = true;
})

чтобы узнать, какая радиогруппа проверила радиокадры и которая не имеет:

for(group in radio_groups){
    if_checked = !!$(":radio[name='"+group+"']:checked").length
    alert(group+(if_checked?' has checked radios':' does not have checked radios'))
}

Ответ 2

Поддержка нескольких групп и предварительная проверка.

$('input').click(function() {
    var $t = $(event.target);
    if ($t.hasClass('checked')) $t.removeAttr('checked');
    else $('input[type="radio"][name="' + $t.prop('name') + '"]').not($t).removeClass('checked');
    $t.toggleClass('checked');
}).filter(':checked').addClass('checked');​

`` `

Доказательство: http://jsfiddle.net/abrkn/PGW2Z/

Ответ 3

Чтобы выбрать все радио по имени группы и получить только список разных имен:

    function selectRadioByGroupName() {
        return $.unique($('input:radio').map(function(index, element) {
            return this.name;
        }));
    }

Пример фрагмента:

function selectRadioByGroupName() {
  return $.unique($('input:radio').map(function(index, element) {
    return this.name;
  }));
}



$(function () {
  selectRadioByGroupName().each(function(index, element) {
    $('body').append($('<p>First Group name is: ' + element + '</p>'));
  });
});
<script src="https://code.jquery.com/jquery-1.12.1.min.js"></script>

<form action="">
    <p>
        Q1:
    </p>
    <input type="radio" name="gender" value="male"> Male<br>
    <input type="radio" name="gender" value="female"> Female<br>
    <input type="radio" name="gender" value="other"> Other
    <br />
    <p>
        Q2:
    </p>
    <input type="radio" name="status" value="male"> Single<br>
    <input type="radio" name="status" value="female"> Married<br>
    <input type="radio" name="status" value="other"> Other
    <br />
    <input type="button" name="submit_id" value="Submit" onclick="submitAnswers()">
</form>