在回答关于jQuery效果的this question时,我考虑过将callback
参数用于.fadeIn( 500, my_function )
。
虽然原则上这是一个可行的想法,我不知道(并且如果允许回调被提交,则没有jQuery文档:();
function keep_animating(){
$("#id").fadeIn(500).fadeOut(500, keep_animating );
}
答案 0 :(得分:3)
您可以添加调试器断点并测试堆栈大小是否增加。 :)
然而,由于动画/ fadings使用setTimeout / setInterval,我高度猜测调用深度不会增加,即它不会出现堆栈溢出。
答案 1 :(得分:1)
我花时间问'people who know'...没有堆栈溢出,因为没有明确的递归:fadeIn
,fadeOut
...方法只需在效果队列中创建一个条目。这意味着keep_animating
函数不会在同一个上下文中执行。
礼貌dave methvin:
你所描述的“递归” 实际上不是递归。 jQuery的 视觉效果在setTimeout上运行 计时器,所以回调函数不是 像它一样立即运行 递归。相反,回调运行 动画完成后 几个“步骤”,每个由一个触发 的setTimeout。
答案 2 :(得分:0)
你的解决方案会递归,并最终炸掉筹码 - 但你会有很长一段时间 - 取决于浏览器 - 直到它。对于快速演示,这很好,但对于生产就绪的代码,您将需要采用非递归方法,例如:
function pulse(){
$("#id").fadeIn(500).fadeOut(500);
}
setInterval(pulse, 1000);
有很多方法可以让你这么做,但应该让你到那儿。