Удалять появившиеся блоки при нажатии
При нажатии на кнопку появляются блоки. У каждого такого блока есть кнопка есть крестик. При нажатии на него должен удалятся этот блок.
Но дело в том что при инициализации страницы этих крестиков нет и js не видит их. Поэтому просто объявить их вот так, и потом работать с ними не получается
const removeBtns = document.querySelectorAll('.block__close');
Получается при создании каждого нового блока нужно добавлять его крестик в какую то коллекцию? Или как? Как это сделать? https://codepen.io/anon/pen/VVvqdZ |
|
Nexus,
Не совсем понимаю к чему это У меня проблема в другом: Если я объявляю крестики таким образом
const removeBtns = document.querySelectorAll('.block__close');
то Js их не видит |
[...removeBtns].map(btn => ... до добавления блока в removeBtns пусто, поэтому слушатель не установился, надо после добавления блока устанавливать слушатель... |
Цитата:
https://codepen.io/anon/pen/qQbWOB?editors=0010 |
Делегирование очень даже при чем
Сначала button class="block__close" отсутствуют.
<div id="container"></div>
<script>
var cont = document.querySelector("#container");
cont.onclick = function(e) {
if(e.target.classList.contains("block__close")) { alert("block__close"); }
}
var btn = document.createElement("button");
btn.classList.add("block__close");
btn.innerText = "X";
cont.appendChild(btn);
</script>
|
Nexus,
Да, точно. Спасибо! Еще такой момент когда удаляются все блоки, должно срабатывать событие. как это сделать? Получается нужно как то проверять количество блоков |
yaparoff, после удаления проверить их кол-во и ...
https://codepen.io/anon/pen/qQbWOB?editors=0010 |
Nexus,
Благодарю |
| Часовой пояс GMT +3, время: 06:43. |