Проблема в том, что вы используете событие изменения, которое не срабатывает при повторном нажатии радио, поскольку оно не меняется.Но, основываясь на вашем коде, вы можете рассмотреть возможность использования меток, которые позволят вам в любом современном браузере, кроме IE8, получить тот же эффект с чистым CSS.Единственная загвоздка в том, что ваш ярлык должен следовать вашему вводу.
Ваш HTML переделан с ярлыками:
<input type="radio" id="radioa" name="radio[1]" class="rg1" value="1" />
<label for="radioa">A</label>
<input type="radio" id="radiob" name="radio[1]" class="rg1" value="2" />
<label for="radiob">B</label>
<input type="radio" id="radioc" name="radio[1]" class="rg1" value="3" />
<label for="radioc">C</label>
CSS:
[type=checkbox], [type=radio] {
display: none;
}
[type=checkbox] + label, [type=radio] + label {
background-color: #00A;
}
:checked + label {
background-color: #A00;
}
И это делает,Я пошел вперед и сделал это как для радио, так и для флажков, так как оба доступны для проверки, но, как я уже сказал, он работает, только если его <input /><label></label>
, так как CSS не позволяет (и может никогда не использовать) родительские селекторы и пока не позволяетдля предыдущих селекторов родного брата.Если этот заказ не вариант, вы вернетесь к выполнению через JS.