首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >jquery重复动画

jquery重复动画
EN

Stack Overflow用户
提问于 2011-10-03 22:06:52
回答 4查看 10.1K关注 0票数 2

这段代码似乎破坏了我代码的其余部分?

代码语言:javascript
运行
复制
function sam() {
    $("#animate").children("#box")
        .animate({
        left: '+=1100'},8000, 'linear', function() {
            $("#animate").children("#box").css("left", "0");
            sam();
        });
}

setInterval(sam());

很抱歉回复这么短,但我一直被一条愚蠢的高质量消息屏蔽了

EN

回答 4

Stack Overflow用户

发布于 2011-10-03 22:09:06

试着改变

代码语言:javascript
运行
复制
setInterval(sam());

代码语言:javascript
运行
复制
setInterval(function(){
    sam()
}, 1000);

这将触发sam() setInterval的每个second.Your用法都是错误的

另外,删除sam()函数中的sam()调用。

所以最后的代码是:

代码语言:javascript
运行
复制
function sam() {
    $("#animate").children("#box")
        .animate({
        left: '+=1100'},8000, 'linear', function() {
            $("#animate").children("#box").css("left", "0");
        });
}

setInterval(function(){
    sam()
}, 1000);
票数 8
EN

Stack Overflow用户

发布于 2011-10-03 22:11:36

setInterval需要第二个参数来表示运行代码sam()的频率。但是我不知道你是不是想这样,不管怎么说,它似乎是这样做的。

代码语言:javascript
运行
复制
function sam() {
    $("#animate").children("#box")
        .animate({
            left: '+=1100'},8000, 'linear', function() {
            $("#animate").children("#box").css("left", "0");
            sam();
        });
}

sam();

如果要一遍又一遍地重复动画,或者使用setTimeout而不是setInterval,则应该足够了。

设置间隔将重新启动代码,即使第一次运行没有完成,您的动画也需要8秒,如果您说每2秒运行一次sam(),例如,您将得到一个非常非常糟糕的结果,因为代码需要超过2秒才能运行,并且您还说它应该重新运行自己。我根本不会使用setInterval

演示:http://jsfiddle.net/voigtan/tG7Gm/2/

票数 1
EN

Stack Overflow用户

发布于 2011-10-03 22:21:05

您可以使用完成动画回调来开始一个新的动画。你能澄清一下,你是想让动画在第一个动画结束时开始,还是只想让无限的动画叠加在一起?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7636133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档