当前位置:  开发笔记 > 前端 > 正文

jQuery动画跨多个元素排队

如何解决《jQuery动画跨多个元素排队》经验,为你挑选了2个好方法。

这个问题类似于关于动画队列的问题,但该线程中的答案非常具体,不易推广.

在我的web应用程序,消息报告给用户(信息框,错误和警告等),通过输出divclass="alert"如:

Login successful
You have new messages waiting

页面上可能有任意数量的警报,具体取决于用户的操作.

我想要的是使用jQuery动画按顺序显示每个警报框:一旦一个动画结束,下一个动画开始.

其他问题的答案说使用回调如:

$('#Div1').slideDown('fast', function(){
    $('#Div2').slideDown('fast');
});

除非在动画中存在未知数量的div,否则无效.有人知道实现这个目标的方法吗?



1> nickf..:

我想出了一个解决方案,虽然我怀疑有人知道更多关于JS关闭的人可能会给我一些指示.

nextAnim($('.alert'));

function nextAnim($alerts) {
    $alerts
        .eq(0)    // get the first element
        .show("slow",
            function() {
                nextAnim($alerts.slice(1));  // slice off the first element
            }
        )
    ;
}



2> Shog9..:

设置起来很容易:

// Hide all alert DIVs, then show them one at a time
$(function()
{
   var alerts = $(".alert").hide();
   var currentAlert = 0;
   function nextAlert()
   {
      alerts.eq(currentAlert).slideDown('fast', nextAlert);
      ++currentAlert;
   }
   nextAlert();
});

你可以用这个简单的插件方法制作一个简单的插件方法,如果它是你会经常使用的东西.

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有