Есть некий контейнер вида:
<div class="wrapper">
<div class="box"></div>
</div>
с такими стилями:
.wrapper {
position: absolute;
left: 20px;
top: 20px;
}
.box {
position: relative;
width: 100px;
height: 100px;
background: red;
}
и с таким небольшим кодом:
window.addEventListener('mousedown', function(e) {
console.log(e.target.className)
});
Проблема в том, что когда я нажимаю кнопкой мыши на красный квадрат, в консоли я получаю блок
.box. А нужно, чтобы выводился
.wrapper. Как сделать, чтобы событие нажатия кнопки мыши срабатывало только для родителя (.wrapper) ?
P.S.: Обработчик
mousedown должен быть привязан только к
window (!).
Готовый пример
тут.
*UPDATE:
Вложенность может быть любая. Например, такая:
<div class="wrapper">
<div class="wrapper-2">
<div class="box"></div>
</div>
</div>
Это тоже нужно учесть. При такой вложенности при нажатии на красный квадрат нужно получить .wrapper.
**UPDATE:
Рекурсивно пробежался наружу до нужного родителя:
document.addEventListener('mousedown', function(e) {
let el = e.target;
while(el.className !== 'wrapper') {
el = el.parentNode;
console.log(el)
}
console.log(el.className)
}, false);