代码之家  ›  专栏  ›  技术社区  ›  Jonathan

jQuery心跳动画崩溃

  •  0
  • Jonathan  · 技术社区  · 12 年前

    我试图用jQuery制作心跳动画,但它有一些我不理解的行为。

    function pulse() {
        var target = $('body');
    
        target.animate({
            'font-size': '100.2%',
                'background-size': '230%'
        }, 200).delay(1600)
            .animate({
            'font-size': '100.1%',
                'background-size': '200%'
        }, 200, function () {
            window.setTimeout(pulse(), 4000);
        }).delay(200);
    }
    

    Fiddle
    在我看来 setTimeout(pulse(), 4000); 无论我使用的超时时间如何,都会立即执行。此外,当我在手机上查看它时,它会在短时间后崩溃。

    我不太熟悉jQuery延迟方法,但我做错了什么吗?我不确定我是否正确阅读了自己的代码:)

    编辑:
    Updated Fiddle
    :是我的另一个代码使移动设备崩溃。“单击文档以静音”代码使其崩溃。您介意看一眼它并告诉我,如果您看到什么可能会使手机崩溃吗?

    1 回复  |  直到 12 年前
        1
  •  1
  •   Ayush    12 年前

    setTimeout(pulse(), 4000); 应该是 setTimeout(pulse, 4000);

    注意后面没有括号 pulse .

    这是因为当括号出现时,这意味着应该对函数求值(这是导致它立即执行的原因)。没有它们,它是对作为参数传递给的函数的引用 setTimeout 并且仅在以下情况下执行 setTimeout(设置超时) 选择执行它,这是您想要的。