Как сделать смену обработчика jQuery?

Есть примерно такой код:
$('.btn1').on("click", function()
{
	$(this).removeClass( 'btn1' );
	$(this).addClass( 'btn2' );
	alert(1);
});
	
$('.btn2').on("click", function()
{
	alert(2);
});


При нажатии кнопки срабатывает первая функция, class у элемента меняется, но при повторном клике срабатывает все та же первая функция, а не вторая.

В чем может быть ошибка?
  • Вопрос задан
  • 2242 просмотра
Решения вопроса 1
Satanpit
@Satanpit
Front-end developer
Не учитесь у дяди @melnikov_m плохого. Используйте делегированные события там где это необходимо.
Проблема несрабатывания второго события, действительно, заключается в том что Вы навешиваете событие на пока несуществующий элемент .btn2.
В данном же случае Вы можете навесить второе событие внутри первого и в первом использовать one. Но хоть убейте, не пойму зачем Вам это? Можно же все реализовать и в первом.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@melnikov_m
Смотри прямую и делегированну обработку jquery.page2page.ru/index.php5/On
У тебя вот так - $('.btn2').on('click', function(){ // обработчик ....
а надо вот так - $('document').on('click', '.btn2', function(){ // обработчик ....
Ответ написан
Комментировать
DeLaVega
@DeLaVega
Верстаю, фронтэндю =)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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