jquery回调被多次调用

时间:2009-05-26 08:11:26

标签: jquery callback

当我在jQuery中使用淡入淡出/幻灯片/动画函数时,对应用效果的每个元素多次调用回调。这当然是设计的。我只是想知道什么时候调用最后一个回调。

以下是我提出的内容 - 它会淡出所有div并在最后一次回调被触发时显示警告()。

$("div").fadeOut(1000, function ()
{
     if ($("div").index($(this)) == $("div").length-1)
          alert("this is the final callback");
});

是否有更简单的方法来检查哪个回调是最后一个回调还是这是唯一的方法吗?

3 个答案:

答案 0 :(得分:46)

尝试查看the jQuery documentation for .promise()

这应该有效:

$('div').fadeOut(1000).promise().done(function() {
   alert('all done');
});

通常,关于这个的jQuery文档真的很模糊。但我不确定我能做什么

答案 1 :(得分:17)

当调用最后一个元素上的fadeOut时,这将产生警报。这不一定是最后一个fadeOut。

var numDivs = $('div').length;
$('div').fadeOut(1000, function() {
  if( --numDivs > 0 ) return;
  alert('this is the final fadeout to complete');
});

JSFiddle

上查看

答案 2 :(得分:1)

$("div:not(:last)").fadeOut(1000);
$("div:last").fadeOut(1000, function() {
    alert("Hey!");
});