@anton_trofimov95

Как открыть событие по добавленному элементу?

Есть код
const openModals = document.querySelectorAll('.open-modal')
const modalBg = document.querySelector('.modal-bg')

for (openModal of openModals) {
    openModal.onclick = function() {
        modalBg.classList.toggle('modal-bg__active')
    }
}


Открывает по клику на элемент с классом .open-modal модалку. Если в верстке сделать кнопку с этим классом - все работает

Но если я добавляю элемент через js

const uls = document.querySelectorAll('.third-block-flex__item__body ul')
const button = document.createElement('button')

button.className = 'button open-modal'
button.innerText = 'Хочу этот пакет'
for (ul of uls) {
    ul.after(button)
}


То клик уже не работает и добавляется только в одном месте. Как решить данную проблему?
Код
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
Seasle
@Seasle Куратор тега JavaScript
const uls = document.querySelectorAll('.third-block-flex__item__body ul');

for (let ul of uls) {
	const button = Object.assign(document.createElement('button'), {
		className: 'button open-modal',
		textContent: 'Хочу этот пакет'
	});
	button.addEventListener('click', ВАШ_ОБРАБОТЧИК);

	ul.after(button);
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@historydev Куратор тега JavaScript
Редактирую файлы с непонятными расширениями
Ваш подход к задаче не правильный, ознакомьтесь с .map() и с forEach

click
Ответ написан
Ваш ответ на вопрос

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

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