以下是plunker
$(document).ready(function(){
$('#btn-animate').click(function(){
animate();
});
$('#btn-remove').click(function(){
$('.to-animate').removeClass('animate');
});
function animate(){
$('.to-animate').removeClass('animate');
$('.to-animate').addClass('animate');
}
});
如果我点击" ANIMATE"按钮它添加了一个动画' div的类和动画(改变颜色)。但是如果你再次点击它会尝试删除该类' animate'并将其添加回来,以便动画再次触发。
但它没有发生。奇怪的是,如果我点击"删除"按钮删除动画'然后使用" ANIMATE"按钮添加它再次动画的类。
有人可以解释为什么第一个按钮无法提供所需的结果吗?每次点击" ANIMATE"我怎样才能触发动画?按钮?
答案 0 :(得分:2)
通常情况下,浏览器不会重新绘制UI,直到所有javascript运行完毕并且大多数浏览器足够聪明,以便在第二次单击动画按钮后,DOM之前和之后相同,因此它不会做任何事情。
最简单的解决方案是删除该类,然后设置超时以在短暂延迟后将其添加回来。
function animate(){
$('.to-animate').removeClass('animate');
setTimeout(function(){$('.to-animate').addClass('animate');}, 10);
}
答案 1 :(得分:0)
伙计,从我看到的,一切正常,我打开链接,那里也正常工作。
如果您检查该类是否存在而不是删除该怎么办?
function animate(){
if(!$('.to-animate').hasClass('animate')){
$('.to-animate').addClass('animate');
}
}
答案 2 :(得分:0)
jQuery已经有了满足您需求的课程。它被称为toggleClass
$(document).ready(function() {
$('#btn-animate,#btn-remove').click(function() {
$('.to-animate').toggleClass('animate');
});
答案 3 :(得分:0)
不是从类中获取动画,而是使用jquery
进行动画$(document).ready(function(){
$('#btn-animate').click(function(){
$(this).animate(
"opacity":"0",
// whatever animation you want in here
}, 300);
});