Задать вопрос
@kapai69

Jquery get() — почему после загрузки контента не выполняется js?

Разбараюсь с history api, сегодня уже спрашивал, но как то неправильно сформулировал вопрос.
Есть скрипт
function getContent(url, addEntry) {
    $.get(url).done(function(data) {
        $('#contentHolder').html($(data).find("#contentHolder").html());
        if(addEntry == true) {
            history.pushState(null, null, url); 
        }
    });
}

При загрузке контента, js не реагирует на загруженный html код (тоесть если в загруженном контенте есть кнопка с классом run, которая вызывает алерт, то при нажатии на нее события не произойдет). Такое ощушуние js, что он его экранитует его, чтобы не загрузить и не выполнить что нибудь вредоносное.
Как можно решить эту проблему?
  • Вопрос задан
  • 2447 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
FeoK
@FeoK
Студент Политеха, Фрилансер.
После того как вы подмените содержимое, необходимо заново инициализировать все события.
function getContent(url, addEntry) {
    $.get(url).done(function(data) {
        $('#contentHolder').html($(data).find("#contentHolder").html());
        init_alert();
        if(addEntry == true) {
            history.pushState(null, null, url); 
        }
    });
}

function init_alert(){
     $('.run').unbind();
     $('.run').click(event){ ... }
}


То-есть сначала снимаем все события, что-то бы случайно не продублировать, а затем вещаем новое.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@allexp
web-developer
События то где назначаются? В загружаемом контенте или в основном документе? Советую подробней прочитать документацию api.jquery.com/on особенно про Direct and delegated events
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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