Динамическое изменение атрибута id

302
09 января 2017, 20:14

Есть такой код

$("#start").click(function(){
   $(this).attr("id", "submit");
});
$("#submit").click(function(){
   alert("something");
});

Вопрос: почему при клике на этот же элемент не выполняется alert? Я ведь изменил ему id на другой, когда первый раз кликнул, следовательно, ожидаю, что выполнятся действия при клике на этот же элемент уже с id "submit", но этого не происходит.

Answer 1

Дело в том, что когда вы обрабатываете функцию нажатия для 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>

Answer 2

Вот так работает:

$("#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>

Answer 3

$("#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>

READ ALSO
Как сделать загрузку с помощью символов на JavaScript?

Как сделать загрузку с помощью символов на JavaScript?

Как сделать анимацию загрузки с помощь символов, как было на DOS или в Ubuntu терминале? А символы эти:

261
Почему IsBackground не работает?

Почему IsBackground не работает?

Изучаю C#Подскажите, почему поток не становится асинхронным после IsBackground (окно просто подвисает пока едет кнопка)? Как правильно?

411
C# Вывод данных sqlite в datagridview без datasource

C# Вывод данных sqlite в datagridview без datasource

Подскажите, как вывести данные из sqlite в datagridview таким образом, чтобы привязать "DATE" и "FULLNAME" к конкретным столбцам datagridviewВариант с datasource не устраивает,...

635
Selenium. Получение Cookie с сайта

Selenium. Получение Cookie с сайта

Я хотел бы узнать как с помощью Selenium получить Cookie, c браузера по умолчаниюТо есть пользователь авторизуется на моем сайте, а потом скачивает...

341