Поскольку на этот вопрос до сих пор нет правильного ответа, но в Google он занимает довольно высокое место по значению "переключение радиокнопок", вот правильное решение для всех, кто еще ищет.
Если вы используете jQuery, просто используйте селектор атрибутов jQuery , как отмечено Flavius Stef .
OP, не совсем понятно, что делает ваш код. Давайте предположим, что в вашем коде вы хотите добавить «скрытый» класс к любой активной радиокнопке.
$("your selector here").change(function() {
$('input[name="' + this.name + '"]').removeClass("hidden");
$(this).addClass("hidden");
});
Обратите внимание на разницу между $(this)
(объект jQuery) и this
(объект DOM). По сути, я удаляю «скрытый» класс из каждого ввода, имеющего одно и то же имя, а затем добавляю «скрытый» класс в текущий ввод.
Конечно, я предполагаю, что вы не используете дубликаты имен для разных входов на странице. Также обратите внимание, что это будет работать только для переключателей, поскольку событие «изменить» переключателя срабатывает только при активации, а не при отключении.
Прослушивание для обмена на флажки и переключатели
В моем случае я хотел добавить «проверенный» класс к активным переключателям и флажкам. Поскольку этот флажок запускает событие «onchange» как при включении, так и при снятии флажка, мне потребовался дополнительный код.
$('input[type="radio"]').change(function() {
$('input[name="' + this.name + '"]').removeClass("checked");
$(this).addClass("checked");
});
$('input[type="checkbox"]').change(function() {
$(this).toggleClass("checked", ($(this).is(":checked")));
});
Последняя функция использует toggleClass для установки «проверенного» класса, если .is(":checked")
равно true
.
В качестве альтернативы вы можете объединить две функции во что-то вроде:
$('input[type="radio"], input[type="checkbox"]').change(function() {
if(this.type == "radio")
$('input[name="' + this.name + '"]').removeClass("checked");
$(this).toggleClass("checked", ($(this).is(":checked")));
});
В любом случае, всегда будьте осторожны при прослушивании события onclick, так как оно не сработает, когда ввод активирован с помощью клавиатуры.