@cocomuffin

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

Приветствую!

<div id="parent">
  <span id="child1">asdasd</span>
  <span id="child2">qweqweqw</span>
</div>


const parent = document.getElementById('parent');
const child1 = document.getElementById('child1');

parent.addEventListener('copy', (e) => {
	console.log('capturing');
  console.log(e.target); // Тут указан child1 в качестве target
}, true);

parent.addEventListener('copy', (e) => {
	console.log('bubbling');
  console.log(e.target);  // Тут тоже
}, false);

child1.addEventListener('copy', (e) => {
	alert('copied!');
});


Хочу сделать так: если был выделен и скопирован дочерний элемент, то его обработчик события запускается. А вот если был выделен и скопирован родитель (куда входит в т.ч. дочерний элемент 1, но еще и дочерний 2), то обработчик события для дочернего1 не должен запускаться. Можно было бы смотреть на e.target, но при выделении и копировании родительского контейнера в качестве target устанавливается его первый ребенок - почему так, просто ставится в качестве самого глубокого элемента первый ребенок? При том не важно, с какой стороны выделять и копировать. Можно ли как-то изловчиться?

Уточняю, при копировании дочернего1 должен вылазить алерт, при выделении и копировании родителя (вместе с дочерним1, но и с другими элементами), алерт вылазить не должен.

https://jsfiddle.net/fiorsaoirse/uLcwe5ty/13/
  • Вопрос задан
  • 107 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы