«Прикрепить» класс к выбранной радиокнопке?

Я пытаюсь добавить класс к выбранному радиовходу а затем удалите этот класс, когда выбрано другое радио того же типа

Радиокнопки имеют класс radio_button, но я не могу получить класс, который нужно изменить с помощью приведенного ниже кода.

  jQuery(".radio_button").livequery('click',function() {  

      $('input.radio_button :radio').focus(updateSelectedStyle);
      $('input.radio_button :radio').blur(updateSelectedStyle);
      $('input.radio_button :radio').change(updateSelectedStyle);
  }
  function updateSelectedStyle() {
      $('input.radio_button :radio').removeClass('focused');
      $('input.radio_button :radio:checked').addClass('focused');
  }

Хороший вопрос, потому что я узнал о плагине livequery. Кстати, в вашем примере кода отсутствует одна фигурная скобка ")".

Rene Saarsoo 07.01.2009 22:45
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
845
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

  • Дайте каждому переключателю уникальный идентификатор
  • Передайте идентификатор по клику
  • Удалите "фокусированное" имя класса для всех переключателей с одним и тем же классом.
  • Добавьте "фокусированный" класс к переключателю с переданным вами идентификатором.
Ответ принят как подходящий

Проблема Tre вызвана одним лишним пробелом в ваших селекторах.

Вместо:

$('input.radio_button :radio')

вы хотели написать:

$('input.radio_button:radio')

Во-первых, я согласен с ответом Рене Саарсу о дополнительном пространстве.

Во-вторых, вы также пытаетесь применить стиль к метке переключателя? Вероятно, вы захотите как-то объединить кнопки и метки. Например:

<span class = "radiowrapper"><input type = "radio" name = "system" value = "1" class = "radio_button"> 1</span>
<br>
<span class = "radiowrapper"><input type = "radio" name = "system" value = "2" class = "radio_button"> 2</span>

Затем избавьтесь от лишних вызовов в вызове livequery и переместите код из функции updateSelectedStyle () в вызов livequery (в противном случае я заметил проблемы с IE):

   jQuery(".radio_button").livequery('click',function() {
        $('input.radio_button:radio').parent(".radiowrapper").removeClass('focused');
        $('input.radio_button:radio:checked').parent(".radiowrapper").addClass('focused');
   });

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

  jQuery(".radio_button").livequery('click',function() {  
    $('input.radio_button:radio')
      .focus(updateSelectedStyle)
      .blur(updateSelectedStyle)
      .change(updateSelectedStyle);
  });
  function updateSelectedStyle() {
    $('input.radio_button:radio')
      .removeClass('focused')
      .filter(':checked').addClass('focused');
  }

Другие вопросы по теме