当我在函数中包装动画效果时,它停止工作.有人能告诉我为什么吗?

When I wrap my animation effect in a function, it stops working. Can anyone tell me why?

本文关键字:停止工作 告诉我 为什么 函数 包装 动画      更新时间:2023-09-26

我将css和javascript复制到jsfiddle中,但我不知道该在html中放入什么,无论如何,我试图获得单个图像来脉冲,问题是它只定义为一个类,我遇到了麻烦。当我把它单独作为它自己的函数时,它工作得很好http://jsfiddle.net/EQs9N/,但是当我把它包装在一个不可见的函数中(或不管它叫什么),动画停止发射http://jsfiddle.net/EQs9N/1/。这和我给一个班级做动画有关系吗?是否有办法将它定义为一个对象,这有帮助吗?由于

你声明了一个函数a,但是你没有调用这个函数。

(function(){
    ...
})()

这将创建一个匿名函数(就是您正在查找的术语)并执行它。我不确定你为什么要在这种情况下包装它,$(document).ready()应该足够了。

关于jsfiddle用法的旁注:
在jsfiddle中,你可以选择onDomReady而不是onLoad从框架下拉菜单中自动包装你的javascript在$(document).ready()使你的$(document).ready()调用冗余。选项onLoad将把它封装在$(window).load()

如果你选择了"no wrap",那么jsfiddle只会用必要的脚本标签包围它,然后根据所选的选项将其放在标题或正文中。

$(document).ready(function() {是jquery延迟任何代码执行到页面完全加载后的方式。

如果你把这部分代码包装在一个函数中,它将不再工作,代码将只在你调用函数时被调用。这就是为什么当你包装你的代码时它不起作用。

请参阅本教程了解$(document).ready

的使用方法。

在你的第二个jsfiddle中,你定义了一个函数(函数a),但实际上没有调用它。

如果你稍微改变你的代码并将A传递给document.ready(而不是传递一个匿名函数),你应该会发现它工作了:

function A(){
    if (1 == 1){
        function pulsate() {
            $(".image2_template").
              animate({opacity: 0.1}, 1500, 'linear').
              animate({opacity: 1}, 1500, 'linear', pulsate);
          }
        pulsate();
    } else {
        $('.image2_template').animate({
             opacity: 0,
        });
        $('.text3_template').animate({
            opacity: 0,
        });
    }
}
$(document).ready(A);