CSS 具有 jQuery 的动画在第二次单击按钮时未触发
CSS Animation With jQuery Not Firing on Second Button Click
我有一个简单的 table 行,要通过按钮上的 jQuery onClick()
突出显示。
单击按钮时,我删除动画 class(以防它已经存在),然后再添加回来:
$("#animate").click(function () {
$('tr').removeClass('backgroundAnimated');
$('tr').addClass('backgroundAnimated');
});
首次加载页面时,第一次按下按钮会按预期工作。然而,第二次按下不会重新启动动画。
这里是 fiddle.
可能是一个简单的 ;-)。谢谢。
菲奥娜
执行此代码....检查 tr
是否具有 backgroundAnimated
的 class。如果该元素确实存在,则删除 class。否则添加 class.
$("#animate").click(function () {
if(!$('tr').hasClass('backgroundAnimated')){
$('tr').addClass('backgroundAnimated');
}else{
$('tr').removeClass('backgroundAnimated');
}
});
解决方法:
https://jsfiddle.net/8u17gxcp/
$("#animate").click(function () {
var trTemp = $('tbody > tr').clone().removeClass('backgroundAnimated'); //backup the old element
$('tbody > tr').remove(); //remove the old element
$('tbody').append(trTemp); //restore the element
$('tbody > tr').addClass('backgroundAnimated'); //add class to fresh element
});
问题似乎是重新分配class不会触发动画的播放事件,您需要重新创建对象。
除了其他解决方案外,此方法还强制在每个click
事件上用更少的代码再次添加class
。
$("#animate").on("click", function() {
$("tr").removeClass('backgroundAnimated').fadeOut(0).fadeIn(0).addClass('backgroundAnimated');
});
我有一个简单的 table 行,要通过按钮上的 jQuery onClick()
突出显示。
单击按钮时,我删除动画 class(以防它已经存在),然后再添加回来:
$("#animate").click(function () {
$('tr').removeClass('backgroundAnimated');
$('tr').addClass('backgroundAnimated');
});
首次加载页面时,第一次按下按钮会按预期工作。然而,第二次按下不会重新启动动画。
这里是 fiddle.
可能是一个简单的 ;-)。谢谢。
菲奥娜
执行此代码....检查 tr
是否具有 backgroundAnimated
的 class。如果该元素确实存在,则删除 class。否则添加 class.
$("#animate").click(function () {
if(!$('tr').hasClass('backgroundAnimated')){
$('tr').addClass('backgroundAnimated');
}else{
$('tr').removeClass('backgroundAnimated');
}
});
解决方法: https://jsfiddle.net/8u17gxcp/
$("#animate").click(function () {
var trTemp = $('tbody > tr').clone().removeClass('backgroundAnimated'); //backup the old element
$('tbody > tr').remove(); //remove the old element
$('tbody').append(trTemp); //restore the element
$('tbody > tr').addClass('backgroundAnimated'); //add class to fresh element
});
问题似乎是重新分配class不会触发动画的播放事件,您需要重新创建对象。
除了其他解决方案外,此方法还强制在每个click
事件上用更少的代码再次添加class
。
$("#animate").on("click", function() {
$("tr").removeClass('backgroundAnimated').fadeOut(0).fadeIn(0).addClass('backgroundAnimated');
});