Есть такой код
$("#start").click(function(){
$(this).attr("id", "submit");
});
$("#submit").click(function(){
alert("something");
});
Вопрос: почему при клике на этот же элемент не выполняется alert? Я ведь изменил ему id на другой, когда первый раз кликнул, следовательно, ожидаю, что выполнятся действия при клике на этот же элемент уже с id "submit", но этого не происходит.
Дело в том, что когда вы обрабатываете функцию нажатия для alert, то элемента #submit не существует. Нужно добавить глобальный обработчик нажатия на этот элемент:
$("#start").click(function() {
$(this).attr("id", "submit");
});
$(document).on("click", "#submit", function() {
alert("something");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="start">Нажми</button>
Вот так работает:
$("#start").click(function() {
$(this).attr("id", "submit");
});
$("body").on("click", "#submit", function() {
alert("something");
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="start">Нажми</button>
$("#start").click(function(){
$(this).attr("id", "submit");
$(this).click(function(){
alert("something");
});
});
<script src="https://code.jquery.com/jquery-2.0.3.js"></script>
<div id="start">start</div>
Сборка персонального компьютера от Artline: умный выбор для современных пользователей