После смены класса елемента продолжает отрабатывать старые обработчик событий

Обработчики событий:

$(document).on('click','.old-class', function () {
    --\--
}

$(document).on('click','.new-class', function () {
    --\--
    }

<input class="old-class">

Меняю класс в елементе:

$('input').removeClass('old-class');

$('input').addClass('new-class');

в DOM елемент отображается с новым классом :input class="new-class", но на него продолжает реагировать обработчик события для класса old-class.

Подскажите пожалуйста, как решить эту проблему?


Ответы (1 шт):

Автор решения: Bookamba

В вашем коде-примере есть синтаксические ошибки. Не хватает закрывающих скобок.

Посмотрите реализованный пример CodePen клик

JS:

$(document).on('click','.old-class', function () {
    console.log("old-class");
});

$(document).on('click','.new-class', function () {
    console.log("new-class");
    });

$("#btn").click(function() {
  $('input').removeClass('old-class');

$('input').addClass('new-class');
});

HTML:

<input class="old-class">
<button id="btn">Remove old-class</button>
→ Ссылка