Как настроить таргетинг на правильный .card-элемент, даже если у него есть дети, которые нажали?Как переключить класс элемента между target и currentTarget?
< .card.animate
- я хочу это
если currentTarget используется, он будет делать что-то вроде этого
wine_content.animate
< - не то, что я хочу
или
< .card h4.animate
- - Не то, что я хочу.
Редактировать: Я действительно искушаюсь, просто делаю цикл for и addListener на каждой карте из массива элементов. Это так неправильно?
var card = document.getElementById('wine_content');
card.addEventListener("click", function (e) {
if (e.target !== e.currentTarget) {
e.target.classList.toggle('animate');
}
e.stopPropagation()
}, false);
/********************/
/* WINE CARDS */
/********************/
#wine_content {
background-color: #e5e5e5;
}
.cards {
display: flex;
flex-wrap: wrap;
}
/* NOT WHAT I WANT */
.card h4.animate {
color: #F00;
}
/* EXACTLY WHAT I WANT no matter the node in the child family line.*/
.card.animate h4 {
color: #0F0;
}
.card {
flex-grow: 1;
flex-basis: 30em;
height: 150px;
margin: 0 10px;
}
.card-face {
background-color: #fff;
}
<div class="content">
<section id="wine_content">
<div class="cards">
<div class="card">
<div class="card-face">
<h4>The Prisoner</h4>
<p>Merlot</p>
<p>Diamond Peaks</p>
<p>2012</p>
</div>
</div>
<div class="card">
<div class="card-face">
<h4>The Prisoner</h4>
<p>Merlot</p>
<p>Diamond Peaks</p>
<p>2012</p>
</div>
</div>
<div class="card">
<div class="card-face">
<h4>The Prisoner</h4>
<p>Merlot</p>
<p>Diamond Peaks</p>
<p>2012</p>
</div>
</div>
<div class="card">
<div class="card-face">
<h4>The Prisoner</h4>
<p>Merlot</p>
<p>Diamond Peaks</p>
<p>2012</p>
</div>
</div>
<div class="card">
<div class="card-face">
<h4>The Prisoner</h4>
<p>Merlot</p>
<p>Diamond Peaks</p>
<p>2012</p>
</div>
</div>
<div class="card">
<div class="card-face">
<h4>The Prisoner</h4>
<p>Merlot</p>
<p>Diamond Peaks</p>
<p>2012</p>
</div>
</div>
<div class="card">
<div class="card-face">
<h4>The Prisoner</h4>
<p>Merlot</p>
<p>Diamond Peaks</p>
<p>2012</p>
</div>
</div>
</div>
</section>
</div>
Вы уже знаете о 'currentTarget', так почему бы вам не просто использовать его? 'e.currentTarget.classList.toggle ('animate');' или 'this.classList.toggle ('animate');' – Bergi
Это не то, что я ищу. –