场景:我有一个顶部/父级<div>
,上面有一个无限的 CSS 动画。它也有一些<div>
作为子/子节点,一些(一个或多个)可能还有一个无限的 CSS 动画。
HTML 摘录:
<div id="top_div" class="anim1">
<div class="anim2">some more animated contents here</div>
<div>(this gets animated by effect of its parent, of course)</div>
</div>
CSS摘录(只是想知道):
#top_div.anim1 {animation: swinging .5s linear infinite alternate forwards;}
@keyframes swinging {to{transform:rotate(20deg);}}
.anim2 {/*...another different infinite animation here...*/}
现在的问题是:我添加了一个事件处理程序,因为我需要在每次父动画迭代时做一些事情……而我只需要那个!问题是即使子节点无限动画迭代时事件也会触发......所以,当然,我决定检查事件是否与父节点的动画相关,但我也想尝试以某种方式删除事件处理程序从子节点。我正在使用以下JavaSript 代码:
function anim123(e){
if (e.target == top_div && e.animationName == "swinging") do_what_I_need();
else e.target.removeEventListener("animationiteration", anim123);
}
top_div.addEventListener("animationiteration",anim123);
else
分支似乎在那里没有任何影响,当子节点动画迭代时,事件继续触发......你能告诉我它有什么问题吗?
也许我想我不能删除“不存在”的东西?(而且,确实,子节点并没有真正附加事件处理程序,它们有点“继承”它们的父节点,所以......)是否甚至可以删除那些“继承的”子事件侦听器/处理程序,或者我应该do_what_I_need()
当他们触发时,是否满足于简单的“不做” ?
哦,是否有可能animationiteration
仅将事件处理程序附加到父节点并避免它被其子节点“继承”(这样我可以确定只有它的动画会触发,我什至不需要关心处理程序代码中的子节点)?
谢谢你们的帮助