jQuery递归函数调用和Javascript之间有区别吗;s setInterval
Is there a difference between jQuery recursive function calls and Javascript's setInterval?
我正在制作一些波浪图像的动画,使其缓慢而重复地上下移动,以给它一种更生动的感觉,我发现了Javascript的setInterval()。这非常适合每5.3秒(以稍微不同的速度)为我的不同波浪图像设置上下动画。
self.setInterval("waves()",5300);
function waves() {
$('.waves1').animate({
bottom: '-5px'
}, 2000);
$('.waves1').animate({
bottom: '7px'
}, 3000);
$('.waves2').animate({
bottom: '-5px'
}, 2200);
$('.waves2').animate({
bottom: '7px'
}, 2800);
$('.waves3').animate({
bottom: '-5px'
}, 1800);
$('.waves3').animate({
bottom: '7px'
}, 3200);
}
在实现了这一点之后,我还发现您可以使用递归jQuery函数来保持动画的运行。例如:
function animateWaves() {
$('.waves1').animate({ top: '+=15' },
{ duration: 2000, easing: "linear" })
.animate({ top: '-=15' },
{ duration: 3000, easing: "linear",
complete: animateWaves });
}
$(function() {
animateWaves();
});
一种(递归或setInterval)与另一种相比有什么优势?
这不是真正的递归。它是函数内部的自引用,但它只是一个引用,而不是函数调用。稍后,当动画完成时,框架将进行函数调用。
递归涉及活动函数调用的"堆栈",一个在另一个之上。(在相互交织的递归函数的情况下,可能会有介入的活动函数。)这里的情况并非如此。当根据传递给.animate()
调用的引用进行调用时,对"animateWaves"的外部调用将完成。
请注意,jQuery动画机制还使用了浏览器的定时器机制。如果你无论如何都在使用这个库,你最好让它为你处理重复。
相关文章:
- "#"keyCode=222 vs 51(Chrome与Android版Chrome)-为什么有区别
- smoothstate.js和pjax有区别
- JavaScript中的嵌入循环和嵌套循环之间有区别吗
- jQuery递归函数调用和Javascript之间有区别吗;s setInterval
- 为什么我的setInterval有问题
- 使用构造函数创建对象和返回对象有区别吗
- 预加载图像和缓存图像之间有区别吗
- Web组件与小工具:有区别吗
- 使用依赖注入时,通过引用调用服务或直接调用服务是否有区别
- Google Maps/Google Places:getPlace 和 getDetails 方法之间有区别吗?
- 直接在 HTML 中设置“onclick”与通过 DOM 设置“onclick”之间有区别吗?
- 使用嵌入时,元素和属性指令之间是否有区别
- 我让用户将脚本加载到网页中的方式是否有区别
- 这些JavaScript包含定义是否有区别
- 在JavaScript中测试元素的样式属性和css值之间有区别吗
- 为普通JS和AngularJS应用程序添加RWD有区别吗
- alert() 和 Notification.alert() 在 Xcode 中使用 PhoneGap 之间有区别吗?
- 把javascript放在头上和放在主体上有区别吗
- 有return语句和没有return语句的函数之间有区别吗
- 除了 JavaScript 之外,是否有任何其他语言在大括号开始位置(同一行和下一行)之间有区别