Pegas12345
@Pegas12345

Не срабатывает addEventListener, как сделать?

Привет!

Подскажите пожалуйста, как добавить addEventListener на объект при клике, если сам объект и его родитель загружаются после, по AJAX запросу. Получается не могу повесить слушателя на элемент, так как его пока что ещё нету. А когда он появляется, то Listener уже не срабатывает.

По jQuery это делал легко, просто командой "delegate". Даже если сам объект появлялся позже, всё равно работало.

Как этот (delegate) сделать на чистом JavaScript, без jQuery?
  • Вопрос задан
  • 250 просмотров
Пригласить эксперта
Ответы на вопрос 2
ThunderCat
@ThunderCat Куратор тега JavaScript
{PHP, MySql, HTML, JS, CSS} developer
В общем случае обработчик вешается на общий для целевых элементов контейнер (или на document), а при срабатывании евента проверяется евент.таргет, если он удовлетворяет нужным условиям (например имеет нужный класс), выполняем код, иначе ничего не делаем.
Ответ написан
Комментировать
Pegas12345
@Pegas12345 Автор вопроса
вот как посоветуете сделать, что-то не пойму. Есть команда:

input_file = document.getElementsByClassName("uploads");


Которая получает массив всех INPUT FILE в форме. Чтобы определить сколько и какие файлы будут загружаться. Потом в цикле на каждый FILE вешаю событие, чтобы при выборе файла сразу происходила загрузка на сервер.

Типа:

Array.prototype.forEach.call(input_file, function(el) {
    el.addEventListener("change", function() {
        . . . 
    }
});


Но как мне получить сначала getElementsByClassName("uploads"), если "uploads" ещё не загружен. Загрузится потом, и в зависимости уже от условий выбора в SELECT, определённые INPUT FILE для загрузок.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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