@Nohaga

Почему клик срабатывает не на всём label?

$("label").on('click', function() {
 	if($("label").hasClass('active')){
	 $("label").removeClass('active');
 	} else { console.log('sdfsdf');$("label").addClass('active');}	
  });

<label><input type="checkbox">Я даю согласие на обработку персональных данных</label>

нажмите на кнопку ускорить, в попапе снизу, label ничем не перекрыт, срабатывает только в том месте где под ним чекбокс расположен, никак не пойму почему.
  • Вопрос задан
  • 522 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
На всём. Иногда - дважды. Потому что клик по label'у вызывает клик по чекбоксу. Так что класс active добавляется и снимается (или наоборот - снимается и сразу добавляется обратно, если до двойного клика был установлен). Вместо кликов по label'у следует обрабатывать change у чекбокса:

$('label > input').change(function() {
  $(this).parent().toggleClass('active', this.checked);
});
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А зачем нужна такая конструкция? Можно же проще:
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы