@anton99zel
29а класс средней школы №7

Почему не ставится атрибут checked?

Добавил спойлер, по клику на label раскрывается div. Перестали чекаться radio.
.spoiler {display:none;}
в цикле, подгружается с ajax
<div class="box">
 <label class="spoiler_links">
 <input class="linkradio" type="radio" name="postamat">
 </label>
<div class="spoiler"><?=$arr['spoiler'];?></div>
</div>

на странице на которую приходит результат
$(document).on('click','.spoiler_links',function (e) {
$("div[class^='spoiler']").hide('normal');
$(this).parent().children('div.spoiler').toggle('normal');
return false;
 });

Добавлял по разному в код, типа этого
$('.linkradio').attr('checked',true);
Но либо toggle дважды начинает срабатывать, либо чекается последнее radio, либо ничего не происходит.
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Потому что

return false;

Возврат false из обработчика события, устанавливаемого посредством jquery, приводит к отмене действия по умолчанию. В данном случае - клика по input'у.

toggle дважды начинает срабатывать

Потому что клик по label'у вызывает клик по input'у, это событие всплывает, и обработчик, привязанный к label'у, срабатывает повторно.

Вешайте обработчик на input вместо label и слушайте change вместо click.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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