繁体   English   中英

jQuery动画可以通过编程方式链接吗?

[英]Can jquery animations be chained programmatically?

我有以下代码:

jQuery('#flash').animate({opacity: 0.35}, 200)
                .animate({opacity: 0}, 200)
                .animate({opacity: 0.35}, 200)
                .animate({opacity: 0}, 200)
                .animate({opacity: 0.35}, 200)
                .animate({opacity: 0}, 600)

而且我还没有决定要更改状态多少次。 有没有一种方法可以通过编程方式链接动画,而不必通过编辑动画链来添加/删除链元素?

如果我理解正确,则只需要一个FOR循环:

function animate_n_times(n) {
   var flash = $('#flash');
   for(var i=0;i<n;i++) {
      flash.animate({opacity: 0.35}, 200)
           .animate({opacity: 0}, 200);
   }

}

然后称为:

animate_n_times(3);

不,如果不编辑动画队列就不能链接动画。 如果要链接变量,但次数有限,则可以使用循环轻松完成:

var flash = $("#flash");
for (var i=0; i<n; i++)
    flash.animate({opacity: 0.35}, 200).animate({opacity: 0}, 200);

如果要无限循环,或者希望将来满足条件时停止循环,则需要在动画队列上挂一个回调,然后重新启动函数:

var flash = $("#flash");
function anim() {
    // if (condition)
    flash.animate({opacity: 0.35}, 200).animate({opacity: 0}, 200, anim);
                                            // call "recursively": ^^^^
}
anim();

如果您要查找的是,则可以使用循环链接动画。

var $flash = jQuery('#flash'), i;

for (i = 0; i < 10; i++) {
    $flash = $flash.animate({opacity: 0.35}, 200)
                   .animate({opacity: 0}, 200);
}

有一个更短的选择,使用扩展jquery-timing

给定次数动画:

$('#flash').repeat().animate({opacity:0.35}, 200)
    .animate({opacity:0}, 200).until(10);

作为无尽的循环:

$('#flash').repeat().animate({opacity:0.35},200).animate({opacity:0},200,$);

有关详细信息,请参见.repeat() ,.until(count).animate(…,$)的API。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM