Задать вопрос
Valonix
@Valonix
Back end / Front end developer

Как удалить слушатели на элементы которые были заменены после Ajax?

На странице есть ссылки, кликая по которым я перехожу на след. пост или на предыдущий.
После первого клика всё ок. Потом зацикливается по клику аякс шлется 2-4-8-16 и т.д. раз.
Пробовал и .off().on() и unbind() bind() и что только не пробовал. Либо первый раз срабатывает а потом не срабатывает.
Либо зацикливает.
$(document).on('click', '.cl', function(event){
        var _self = $(this);
        var link = _self.attr('href');
        var pageId = link.substring(link.lastIndexOf('/') + 1);
        var page = 'company';
        applyLink(page, pageId);
        event.preventDefault();
        event.stopPropagation();
    });

function loadCompanyPage(pageId){
    console.log('company');
    if(pageId > 0) {
        $.post("/company", {id: pageId}, function (data) {
            if (data.length > 0) {
                var items = $.parseJSON(data);
                renderCompany(items);
            }
        });
    }else {other code}
}
  • Вопрос задан
  • 340 просмотров
Подписаться 3 Оценить 4 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик расширенный
    13 месяцев
    Далее
  • Skillbox
    JavaScript
    3 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Вероятно вы эти "слушатели" навешиваете каждый раз заново. Можно убрать при помощи removeEventListener. Или пересоздать элемент (cloneNode, parent.replaceChild).
Или отрефакторить так, чтобы эти слушатели навешивались только один раз.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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