Проблема с обновлением идентификаторов и обработчиков событий jQuery - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь создать какую-то форму, но я застрял, переходя к третьему шагу.

Моя следующая кнопка имеет такой инкрементный идентификатор:

$('#to-q-2').click(function (e) {
    e.preventDefault();
    $(this).attr("id", "to-q-3");
})

Таким образом, идентификатор обновляется.Но когда я нажимаю снова:

$('#to-q-3').click(function(e) {
        e.preventDefault();
        alert('stop');
});

ничего не происходит.Я думаю, jQuery не обновлял DOM, но я понятия не имею, как это сделать.Любая подсказка?

1 Ответ

0 голосов
/ 28 января 2019

Вам нужно добавить событие click к document, чтобы он мог искать новые элементы, которых не было при первоначальной привязке события click, таким образом, вы можете добавлять события click к динамически добавляемым элементам.Вы можете сделать это, используя:

$(document).on('click', '#to-q-3', function() {...})

См. Рабочий пример ниже:

$(document).on('click', '#to-q-2', function (e) {
    e.preventDefault();
    $(this).attr("id", "to-q-3");
});

$(document).on('click', '#to-q-3', function(e) {
  e.preventDefault();
  alert("stop");
});
#to-q-2 {
  color: red;
}

#to-q-3 {
  color: lime;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="to-q-2">Click this div</div>
...