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

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

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