В To-Do приложении таски отмечаются через один. Почему?

Всем привет! Помогите нубу разобраться ))) В общем пытаюсь сделать To-Do, вот ссылка на codepen - https://codepen.io/Kirill-Kirillov/pen/JygdYg При добавлении новых задач, они отмечаются через одну, не могу понять, почему так, может кто подскажет?
  • Вопрос задан
  • 303 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Потому что при каждом создании нового пункта вешается дополнительный обработчик клика на все пункты списка. В результате на чётных пунктах срабатывает чётное количество обработчиков - класс goal-check выставляется и тут же снимается.

UPD. Обработчики кликов на .goal и .delete надо вешать один раз, применяя делегирование:

$('.todo-task').on('click', '.delete', function() {
  $(this).parent().remove();   
});

$('.todo-task').on('click', '.goal', function() {
  $(this).toggleClass('goal-check');
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Обработчики delete и check можно делегировать на самом список.
Шаблон задачи можно вынести в html.

Как-то так https://codepen.io/anon/pen/ayepod
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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