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

时间:2011-08-12 14:46:12

标签: javascript jquery class animation attr

我将css和javascript复制到了jsfiddle中,但是我不知道在html中放什么,无论如何,我试图让单个图像脉冲,问题是它只被定义为一个类,并且我遇到了麻烦。当我单独使用它作为它自己的函数时,它工作正常http://jsfiddle.net/EQs9N/,但当我将它包装在一个不可见的函数(或其任何调用的函数)时,动画停止触发http://jsfiddle.net/EQs9N/1/。这与我动画课程有什么关系吗?无论如何将它定义为一个对象,这会有帮助吗?感谢

3 个答案:

答案 0 :(得分:0)

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

如果将这部分代码包装在函数中,它将不再起作用,只有在调用函数时才会调用代码。这就是为什么当你包装代码时它不起作用。

有关$(document).ready

的使用情况,请参阅this tuto

答案 1 :(得分:0)

your second 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);

答案 2 :(得分:0)

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

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

这将创建一个匿名函数(就是您要查找的术语)并执行它。

},我不确定为什么你需要在这种情况下包装它。{/ 1}

关于jsfiddle用法的附注:
在jsfiddle中,您可以从框架下拉列表中选择onDomReady而不是onLoad,以自动将您的javascript包装在$(document).ready()中,使$(document).ready()的调用更加冗余。 onLoad选项将其包装在$(document).ready()

如果你选择“no wrap”,那么jsfiddle将只用必要的脚本标签包围它,然后将它放在头部或正文中,具体取决于所选的选项。