Задать вопрос
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}
}
  • Вопрос задан
  • 330 просмотров
Подписаться 3 Оценить 4 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Вероятно вы эти "слушатели" навешиваете каждый раз заново. Можно убрать при помощи removeEventListener. Или пересоздать элемент (cloneNode, parent.replaceChild).
Или отрефакторить так, чтобы эти слушатели навешивались только один раз.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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