@srnsdlmtn

Почему не работает onclick для созданных во время setInterval элементов?

С помощью setInterval создаю элементы
setInterval(function() {
     for (var i=0; i<getRandomInt(1,5); i++) {
         $('<div></div>').addClass("num").
          append(getRandomInt(1,25)).
          appendTo("#field");
      }
}, 200);

Потом хочу вызвать событие при нажатии на них вне этой функции, но ничего не происходит
$('.num').on('click', function() {
  alert(1);
});

Если вставить код выше, в функцию setInterval, то алерт будет выводиться, но ровно столько раз сколько элементов было создано. Почему так и как это можно исправить?
  • Вопрос задан
  • 225 просмотров
Решения вопроса 1
IonDen
@IonDen
JavaScript developer. IonDen.com
Вам поможет делегирование событий.
$(document).on('click', '.num', function () {
    console.log(123);
});


Суть в том, что вы пытаетесь повесить слушатель события на еще не существующие элементы. Конечно же ничего не сработает.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
16 мая 2024, в 23:36
200000 руб./за проект
16 мая 2024, в 23:10
12000 руб./за проект