【发布时间】:2021-11-02 03:59:08
【问题描述】:
有一个问题,我可以单击每个单独的元素,然后目标元素在被单击时返回,但是在应用样式时,它仅适用于第一个元素,而不适用于任何其他目标元素。
事件委托的工作原理如上所述
下面是一个单独的书面示例来尝试调试这个问题,但我很难过
giphyContainer.addEventListener('click', (e) => {
console.log(e.target);
if (e.target.classList.contains("giphyImg__Front1")) {
console.log("clicked! 1")
frontPanel.style.zIndex = -3;
backPanel.style.zIndex = 3;
}
if (e.target.classList.contains("giphyImg__Front2")) {
console.log("clicked! 2")
frontPanel.style.zIndex = -3;
backPanel.style.zIndex = 3;
}
if (e.target.classList.contains("giphyImg__Front3")) {
console.log("clicked! 3")
frontPanel.style.zIndex = -3;
backPanel.style.zIndex = 3;
}
if (e.target.classList.contains("giphyImg__Back1")) {
frontPanel.style.zIndex = 3;
backPanel.style.zIndex = -3;
}
if (e.target.classList.contains("giphyImg__Back2")) {
frontPanel.style.zIndex = 3;
backPanel.style.zIndex = -3;
}
if (e.target.classList.contains("giphyImg__Back3")) {
frontPanel.style.zIndex = 3;
backPanel.style.zIndex = -3;
}
})
<div class="giphyContainer">
<div class="giphyImg">
<img src="img1.png" alt="" class="giphyImg__Front giphyImg__Front1">
<div class="giphyImg__Back giphyImg__Back1"></div>
</div>
<div class="giphyImg">
<img src="img2.png" alt="" class="giphyImg__Front giphyImg__Front2">
<div class="giphyImg__Back giphyImg__Back2"></div>
</div>
<div class="giphyImg">
<img src="img3.png" alt="" class="giphyImg__Front giphyImg__Front3">
<div class="giphyImg__Back giphyImg__Back3"></div>
</div>
</div>
【问题讨论】:
-
您每次都在设置相同的
frontPanel和backPanel元素的样式。这只是每个变量的一个元素。
标签: javascript events delegation