【问题标题】:Custom function for animate.css causing problemsanimate.css 的自定义函数导致问题
【发布时间】:2026-01-13 06:55:02
【问题描述】:

我正在为我的项目使用animate.css 库。我认为创建一个可以为我完成大部分工作的 jQuery 函数会更容易。这是函数:

$(function () {    
    $.fn.extend({
        animateCss: function (animationName, callback) {
            var animationEnd = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend';
            this.addClass('animated ' + animationName).one(animationEnd, function () {
                $(this).removeClass('animated ' + animationName);
                if(callback){
                    callback();
                };
            });
        }
    });

});

它有效,我可以从 jQuery 对象中调用它。问题是,当我从一个对象传入回调函数时,它会被调用,但是当另一个对象调用该函数而不传入回调时,该对象的相同函数会再次被调用。

我不太确定这是怎么发生的,我来自 Java 背景。有没有办法让这个函数保留为其他对象传入的回调变量?

【问题讨论】:

  • 为什么不简单地将动画 css 类添加到 html 中?
  • @NathanielFlick 我需要在添加类后删除它们,这样它们才能再次使用。另外,我不想在动画完成后运行一个函数。这就是我将功能封装在这个函数中的原因。

标签: javascript jquery css animate.css


【解决方案1】:

这是一个例子,我在这里使用了最低限度,但 css3 的美妙之处在于它不需要 javascript 来运行,只需要浏览器来解释它;因此 css3 只能在这么远的地方工作。

All the animation documentation is here,下面是一个简单的反弹示例:

.title-large {
  font-size: 48px;
  }
<link href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.5.2/animate.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<div class="bounce animated title-large">Animate me</div>

我的猜测是您无权访问 html 还是希望动态添加不同的动画?无论哪种方式,您都可以添加您想要的任何类并在动画完成后删除它们,这就是我认为他们在上面的 github 演示页面链接上所做的事情。希望这可以帮助!

【讨论】:

  • 我确实希望动态添加动画。此外,此功能允许我重用代码。这个函数不是在每个动画完成后不断删除类,而是简化了代码。我只需要找出回调出现问题的原因。
  • 我在评论中发布的那个脚本正是 Animate css 用于他们的回调的脚本,这实际上是一个全局函数,然后他们可以调用,用他们想要使用的动画填充变量“x” /运行。
  • 最好能看到您的其余代码,即 html 和 css,以便我们进行诊断。
  • 你确实有一个看起来不正确的 this 被调用(缺少括号):this.addClass,所以它不是一个合适的选择器。