2014-03-26 94 views
0

我试图用jQuery制作心跳动画,但它有一些行为,我不明白。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);是inmediatly执行,不管我用的是超时。另外,当我在手机上查看它时,会在一段时间后崩溃。

我不太熟悉jQuery延迟方法,但我做错了什么?我不知道如果我读自己的代码正确:)

编辑:
Updated Fiddle
:这是我的崩溃移动设备“点击文件静音”代码崩溃,其他代码。你介意看看它,并告诉我,如果你看到什么可能会导致电话崩溃?

+0

“我的手机” - 您可能需要指定您在此处使用的内容;也许这只是您使用的浏览器中的一个错误。 – coreyward

+0

@coreyward银河S2,可能只是推动它太难我想。 – Jonathan

回答

1

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

注意有没有括号pulse后。

这是因为当括号存在时,它意味着函数应该被评估(这是导致它立即执行的原因)。没有它们,它是对作为参数传递给setTimeout的函数的引用,并且只有在setTimeout选择执行它时才会执行,这正是您想要的。

+0

谢谢,傻了。我现在完全删除回调并使用'setInterval'。当我在手机上查看时,间隔仍然会使js崩溃。手机不能处理定时器? – Jonathan