Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.11.2018, 15:02
Кандидат Javascript-наук
Отправить личное сообщение для yaparoff Посмотреть профиль Найти все сообщения от yaparoff
 
Регистрация: 26.04.2016
Сообщений: 106

Удалять появившиеся блоки при нажатии
При нажатии на кнопку появляются блоки. У каждого такого блока есть кнопка есть крестик. При нажатии на него должен удалятся этот блок.
Но дело в том что при инициализации страницы этих крестиков нет и js не видит их.
Поэтому просто объявить их вот так, и потом работать с ними не получается
const removeBtns = document.querySelectorAll('.block__close');

Получается при создании каждого нового блока нужно добавлять его крестик в какую то коллекцию? Или как?
Как это сделать?

https://codepen.io/anon/pen/VVvqdZ

Последний раз редактировалось yaparoff, 07.11.2018 в 15:06.
Ответить с цитированием
  #2 (permalink)  
Старый 07.11.2018, 15:08
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

https://learn.javascript.ru/event-delegation
Ответить с цитированием
  #3 (permalink)  
Старый 07.11.2018, 15:19
Кандидат Javascript-наук
Отправить личное сообщение для yaparoff Посмотреть профиль Найти все сообщения от yaparoff
 
Регистрация: 26.04.2016
Сообщений: 106

Nexus,
Не совсем понимаю к чему это
У меня проблема в другом:
Если я объявляю крестики таким образом
const removeBtns = document.querySelectorAll('.block__close');

то Js их не видит
Ответить с цитированием
  #4 (permalink)  
Старый 07.11.2018, 15:27
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

[...removeBtns].map(btn => ...

до добавления блока в removeBtns пусто, поэтому слушатель не установился, надо после добавления блока устанавливать слушатель...
Ответить с цитированием
  #5 (permalink)  
Старый 07.11.2018, 15:28
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

Сообщение от yaparoff
Nexus,
Не совсем понимаю к чему это
К решению проблемы.
https://codepen.io/anon/pen/qQbWOB?editors=0010

Последний раз редактировалось Nexus, 07.11.2018 в 15:30.
Ответить с цитированием
  #6 (permalink)  
Старый 07.11.2018, 15:38
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Делегирование очень даже при чем
Сначала 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>
Ответить с цитированием
  #7 (permalink)  
Старый 07.11.2018, 15:58
Кандидат Javascript-наук
Отправить личное сообщение для yaparoff Посмотреть профиль Найти все сообщения от yaparoff
 
Регистрация: 26.04.2016
Сообщений: 106

Nexus,
Да, точно. Спасибо!
Еще такой момент когда удаляются все блоки, должно срабатывать событие. как это сделать?
Получается нужно как то проверять количество блоков
Ответить с цитированием
  #8 (permalink)  
Старый 07.11.2018, 16:02
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,791

yaparoff, после удаления проверить их кол-во и ...
https://codepen.io/anon/pen/qQbWOB?editors=0010
Ответить с цитированием
  #9 (permalink)  
Старый 08.11.2018, 09:09
Кандидат Javascript-наук
Отправить личное сообщение для yaparoff Посмотреть профиль Найти все сообщения от yaparoff
 
Регистрация: 26.04.2016
Сообщений: 106

Nexus,
Благодарю
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Смена картинок при нажатии Antonjrjr Элементы интерфейса 0 29.05.2017 11:57
Добавлять и удалять Select при нажатии на кнопки jestify Общие вопросы Javascript 4 19.09.2016 09:42
При нажатии на ссылку раскрываются все div anonimous jQuery 1 09.08.2012 14:49
Блок должен перемещаться из одной точки в другую, а при повторном нажатии обратно Ser12345678 jQuery 2 17.07.2012 12:18
SyntaxHighlighter подсветка при нажатии faraday Общие вопросы Javascript 3 31.03.2012 23:43