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}
}
  • Вопрос задан
  • 324 просмотра
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Вероятно вы эти "слушатели" навешиваете каждый раз заново. Можно убрать при помощи removeEventListener. Или пересоздать элемент (cloneNode, parent.replaceChild).
Или отрефакторить так, чтобы эти слушатели навешивались только один раз.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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