Size: a a a

2020 June 01

СП

Сергей Предводителев... in pro.js
Mr. Nobody
а, ну тогда или в цикле вешай листенер на все элементы .action либо повесь листенер на родителя и проверяй e.target
"либо повесь листенер на родителя и проверяй e.target"
Это как?
источник

M

Mr. Nobody in pro.js
Сергей Предводителев
"либо повесь листенер на родителя и проверяй e.target"
Это как?
parent.addEventListener("click", (e) => {
 if (e.target.classList.contains("action")) {
   ...
 }
 ...
});
источник

СП

Сергей Предводителев... in pro.js
Mr. Nobody
parent.addEventListener("click", (e) => {
 if (e.target.classList.contains("action")) {
   ...
 }
 ...
});
но в e.target может быть элемент, который внутри .action. Это получается ещё родителей надо проверять...
источник

СП

Сергей Предводителев... in pro.js
может есть уже какой-то готовый пакет под это дело?
источник

M

Mr. Nobody in pro.js
Сергей Предводителев
но в e.target может быть элемент, который внутри .action. Это получается ещё родителей надо проверять...
ну надо сразу было уточнять это, лучше в песочницу наверное оформить чтобы было понятнее
источник

M

Mr. Nobody in pro.js
да и если потомки динамически формируются, придётся в любом случае через родителя делать и проверку условий
источник

СП

Сергей Предводителев... in pro.js
Mr. Nobody
ну надо сразу было уточнять это, лучше в песочницу наверное оформить чтобы было понятнее
Я поэтому и привёл пример на jQuery  :)
источник

M

Mr. Nobody in pro.js
Сергей Предводителев
Я поэтому и привёл пример на jQuery  :)
я про структуру html, чтобы понимать что у тебя в .action может быть
источник

В

Виктория in pro.js
Сергей Предводителев
Добрый вечер!

Подскажите, как сделать на ванильном JS обработку события вот в таком виде?

На jQuery:
var $container = $('.container');
$container.on('click', '.action', function() {
 ...
});



На JS:
```let container = document.getElementsByClassName('container')[0];
???
[ ...document.querySelectorAll('.container .action') ].forEach((element) => {
 element.addEventListener('click', () => {
   // code
 });
});
источник

S

Syntax Highlight Bot in pro.js
Виктория
[ ...document.querySelectorAll('.container .action') ].forEach((element) => {
 element.addEventListener('click', () => {
   // code
 });
});
источник

p

persona x grata in pro.js
источник

СП

Сергей Предводителев... in pro.js
Виктория
[ ...document.querySelectorAll('.container .action') ].forEach((element) => {
 element.addEventListener('click', () => {
   // code
 });
});
не учитывает, что динамически может быть .action добавлен
источник

M

Mr. Nobody in pro.js
Виктория
[ ...document.querySelectorAll('.container .action') ].forEach((element) => {
 element.addEventListener('click', () => {
   // code
 });
});
как я понял там динамически могут появляться потомки
источник

СП

Сергей Предводителев... in pro.js
источник

В

Виктория in pro.js
Сергей Предводителев
не учитывает, что динамически может быть .action добавлен
Ты о чем?
источник

СП

Сергей Предводителев... in pro.js
Вот это надо чуть допилить, чтобы на элемент можно было вешать
источник

СП

Сергей Предводителев... in pro.js
Виктория
Ты о чем?
.action может появится в контейнере уже после того, как будет повешено событие
источник

В

Виктория in pro.js
Фак
источник

В

Виктория in pro.js
Тогда делегирование
источник

M

Mr. Nobody in pro.js
+
источник