Как удалить класс при клике по опции со всех родителей других опции и добавить класс $(this)?

Всем привет.

Помогите, написал код, но не работает как нужно

1. У меня есть блоки, которые содержат опции типа radio, класс каждого блока form-group
2. В каждом блоке form-group, есть одна, назначенная по умолчанию опции.

Что нужно: по умолчанию, назначенные опции выделены(их родители), при клике в определенном блоке по другой опции, класс должен удаляться с выбранной по умолчанию опции и добавляться для опции(родителя) по которому кликнули(для каждого блока опции индивидуально.

Что я делаю:

1. Получаю все опции по умолчанию и добавляю им класс(работает)
2. При событии change() удаляю со всех опции(родителей) класс и добавляю опции по которой ликнули $(this), но работает не правильно

что я делаю не так:

$(function() {


     $('.form-group input:radio:checked').each(function(){
          $(this).closest('.radio').addClass('custom-checked');
    });


       $("input").change(function() {
     

        $('.form-group input:radio:checked').each(function(){
              $(this).closest('.radio').removeClass('custom-checked');
        });

          $(this).closest('.radio').addClass('custom-checked');

     });



  });


Пример: https://jsfiddle.net/m4tLx208/
  • Вопрос задан
  • 97 просмотров
Решения вопроса 1
Stalker_RED
@Stalker_RED
Выбрать родительскую группу, снять выделение со всех.
Выбрать обертку кликнутого, добавить выделение.


Второй вариант:
Выбрать ближайшую обертку, добавить выделение, а с соседних оберток (siblings) - снять
Но сработает не с любой разметкой.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы