代码之家  ›  专栏  ›  技术社区  ›  marcelo-ferraz

在jquery.queue的最后一个效果结束时执行函数

  •  2
  • marcelo-ferraz  · 技术社区  · 15 年前

    我想用外汇和函数 我有一个动画,我想在队列的末尾做一个Ajax调用。
    我好像做不到…
    我完全不知道如何继续…

    这是一个非常粗略的例子,但是

    $('#dvHeader').queue(function() {
      $('#dvLeftContent').slideDown(2000);
      $('#dvRightContent').animate({ backgroundColor: '#c71717' }, 2500)
      callAjax();
    }
    

    这段代码在最后一个效果开始之前调用callajax函数,实际上,几乎和第一个效果被调用时一样。
    实际情况有点复杂,我不能使用动画效果的回调,每个例子。我想知道队列什么时候结束最后一个效果,或者类似的效果。
    我如何才能在最后一个动画结束时触发该调用?

    3 回复  |  直到 15 年前
        1
  •  1
  •   rekindleMyLoveOf    15 年前

    看见 http://docs.jquery.com/Effects/animate

    尝试将最后一个效果的回调方法(在本例中为animate())设置为Ajax函数:

    动画(参数,[持续时间],[放松],。[ 回调 ])

        2
  •  0
  •   tvanfosson    15 年前

    使用回调机制将动画与调用链接在一起:

    $('#dvHeader').queue(function() { 
      $('#dvLeftContent').slideDown(2000, function() {
          $('#dvRightContent').animate({ backgroundColor: '#c71717' }, 2500, function() { 
              callAjax();
          });
      });
    });
    
        3
  •  0
  •   marcelo-ferraz    15 年前

    在更仔细地研究了这些队列的工作方式之后,我发现,如果我只知道最后一个将其设置为动画的元素,我可以将Ajax调用排队,它将把我的函数放在动画之后,类似于:

    $('#dvHeader').queue(function() {
      $('#dvLeftContent').slideDown(2000);
      $('#dvRightContent').animate({ backgroundColor: '#c71717' }, 2500);     
    }
    
    $('#dvRightContent').queue(function() {
      callAjax();
    });
    

    当然,具有与回调相同的行为。
    谢谢大家的帮助。