jquery - 为什么我的 jQuery/CSS 动画只在第一次点击时起作用?

标签 jquery css css-animations fade

我试图让一个元素在每次单击链接时淡出然后淡入。我有以下代码,出于某种奇怪的原因,它只适用于第一次点击。 演示:http://jsfiddle.net/aueLr8k0/3/

$("body").on('click', 'a', function () {
   $("div").removeClass('fade').addClass('fade');
})
.fade {
    animation: fadeinout .5s;
}

@keyframes fadeinout {
  0%,100% { opacity: 1; }
  50% { opacity: 0; }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<a href="#">Click this</a><br><br>
<div style="height:200px;width:200px;background:red"></div>

最佳答案

你可以监听 animationend 事件并移除它的类

$("body").on('click', 'a', function () {
   $("div").addClass('fade').one('animationend', function() {
   	 $(this).removeClass('fade');
   });
})
.fade {
    animation: fadeinout .5s;
}

@keyframes fadeinout {
  0%,100% { opacity: 1; }
  50% { opacity: 0; }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#">Click this</a><br><br>
<div style="height:200px;width:200px;background:red"></div>

关于jquery - 为什么我的 jQuery/CSS 动画只在第一次点击时起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48547765/

相关文章:

javascript - 仅使用 CSS3 实现类似盲人的动画

javascript - $(document).ready 似乎触发但不注册事件

javascript - 将值传递到以 # 开头的 jquery 函数中

CSS:边框在 IE7 中不显示,但在 Firefox 中显示

javascript - Firefox:当使用 transform3d 转换父 div 时,下拉菜单(<select> 元素)不注册 "change"事件?

css - 几个 CSS3 关键帧在 Firefox 19 中不起作用/位置错误

javascript - 如何在javascript中通过另一个变量来增加一个变量

javascript - 多个图像文件并使用文件阅读器进行预览

css - GWT - 如何在 FlowPanel 中水平布局组件?

css - 反向重用 CSS 动画(通过重置状态?)