Javascript 当我将动画效果包装到函数中时,它将停止工作。谁能告诉我为什么?

Javascript 当我将动画效果包装到函数中时,它将停止工作。谁能告诉我为什么?,javascript,jquery,class,animation,attr,Javascript,Jquery,Class,Animation,Attr,我将css和javascript复制到JSFIDLE中,但我不知道在html中放什么,不管怎样,我正试图让一个图像脉冲,问题是它只定义为一个类,我遇到了麻烦。当我把它单独作为它自己的函数时,它工作得很好,但是当我把它包装在一个不可见的函数中,或者不管它叫什么,动画就停止了。这与我制作一个类的动画有关吗?有没有办法把它定义为一个对象,这会有帮助?感谢$document.readyfunction{是jquery在页面完全加载后延迟任何代码执行的方式 如果将这部分代码包装到函数中,它将不再工作,并且

我将css和javascript复制到JSFIDLE中,但我不知道在html中放什么,不管怎样,我正试图让一个图像脉冲,问题是它只定义为一个类,我遇到了麻烦。当我把它单独作为它自己的函数时,它工作得很好,但是当我把它包装在一个不可见的函数中,或者不管它叫什么,动画就停止了。这与我制作一个类的动画有关吗?有没有办法把它定义为一个对象,这会有帮助?感谢

$document.readyfunction{是jquery在页面完全加载后延迟任何代码执行的方式

如果将这部分代码包装到函数中,它将不再工作,并且只有在调用函数时才会调用代码。这就是为什么包装代码时它不工作的原因

有关$document.ready的良好用法,请参见中的定义函数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);

您正在声明一个函数a,但没有调用该函数

(function(){
    ...
})()
这将创建一个匿名函数,这就是您正在寻找并执行它的术语。我不确定您为什么需要在本例中包装它,$document.ready应该足够了

关于JSFIDLE用法的旁注: 在JSFIDLE中,您可以从框架下拉列表中选择onDomReady而不是onLoad,以自动将javascript包装在$document.ready中,从而使对$document.ready的调用变得多余。onLoad选项将其包装在$window.load中

如果您选择no wrap,那么jsfiddle将仅使用必要的脚本标记将其包围,然后根据所选选项将其放在头部或身体中