Я пишу jQuery JS-файл, который прикрепляет обработчик события к ссылке, но обработчик события заменяет ссылку новой ссылкой, полученной с помощью запроса ajax. Это на самом деле функция +1, -1, поэтому ссылка переключается взад и вперед.Должен ли я отсоединить обработчик событий до того, как я снова привяжу его к новому элементу?
Насколько я понимаю, даже если ссылка дважды нажата и возвращается к первоначальному значению, она станет третьим уникальным объектом, правильно? Мой вопрос в том, делает ли мне все возможное, чтобы каждый раз отсоединять обработчик событий? Поскольку он не выдает ошибку, когда я удаляю обработчик события после замены ссылки, я задаю , угадывая, что объект и его обработчик событий все еще существуют в JS, они больше не находятся в документе HTML, правильно? Он отлично работает, независимо от того, делаю я это или нет, но сейчас я на 100% уверен, как именно работает этот процесс.
Вот моя функция .done():
.done(function(ReturnData){
PlusOneDiv.replaceWith(ReturnData);
// Redefine variables and detatch/reattach event
PlusOneLink.off('click'); // Is this line helpful at all?
PlusOneDiv = $('#plusonediv');
PlusOneLink = PlusOneDiv.children('a');
PlusOneLink.on('click', submit_plus_one);
afaik jQuery делает это автоматически для вас за кулисами. –
@Jack Во время игры с методами манипуляции DOM jQuery один или два года назад стало совершенно очевидно, что jQuery делает это за кулисами для вас. Хотя я думаю, что после некоторых дополнительных тестов я узнал, что на самом деле это уже используют собственные методы 'appendChild' и' insertBefore' класса 'HTMLElement'. По крайней мере, насколько я помню ... – Kiruse
@ Derija93 Это интересно! У вас есть ссылка на это? –