werber
@werber
Веб разработчик, пишу на PHP+JS/JQuery

Jquery продолжает обрабатывать события для объекта, лишившегося своего старого ID, и получившего новое ID. Как так?

Есть <div id="my1">, по событию click (имеет вид $("#my1").click(function(){});) меняю ему ID на "my2" ($("#id").attr("id","my2");). После смены ID имеется событие нажатия на уже новый <div id="my2"> следующего вида - $(document).on("click","#my2", function(){});. Проблема в том, что при этом продолжает срабатывать click по старому ID, по "my1". Как это предотвратить? Ведь ID уже заменён.
  • Вопрос задан
  • 108 просмотров
Решения вопроса 1
wielski
@wielski
✔ Совет: Вам помогли? Отметьте ответы решением.
Эвент вешается на сам DOM объект, а не на Query Selector.
Поменяв id вы лишь отредактировали объект, но эвенты с него не сняли.

Решение 1: сначала снимайте ваш event с объекта с помощью функции off (Документация), после чего изменяйте его id.

Решение 2: вместо вашей конструкции $("#my1").click(function(){}); используйте конструкцию:

$(document).on('click', '#my1', function(){
   ....
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
werber
@werber Автор вопроса
Веб разработчик, пишу на PHP+JS/JQuery
Сам отвечу на свой вопрос - надо и клик на изначальный ID тоже обрабатывать посредством on. То есть:
$(document).on("click","#my1", function(){});
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы