我正在尝试用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);
}
小提琴
在我看来,setTimeout(pulse(), 4000);
是立即执行的,而不管我使用的超时。而且,当我在手机上查看它时,它会在短时间内崩溃。
我不太熟悉jQuery延迟方法,但我做错了什么?我不确定我是否正确阅读了自己的代码:)
编辑:
更新的Fiddle:这是我的其他代码,崩溃的移动设备'点击文档静音'代码崩溃它。你能帮我看一眼,然后告诉我有没有什么东西会使手机崩溃吗?
setTimeout(pulse(), 4000);
应为setTimeout(pulse, 4000);
注意pulse
后面没有括号。
这是因为当括号出现时,它意味着函数应该求值(这是导致它立即执行的原因)。如果没有它们,它是对作为参数传递给setTimeout
的函数的引用,并且只有在setTimeout
选择执行它时才会执行,这正是您想要的。