jquery回调被多次调用

17 jquery callback

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

这是我想出的 - 它淡出所有div并在最后一次回调被触发时显示alert().

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

有没有更简单的方法来检查哪个回调是最后一个回答,还是这是唯一的方法呢?

eda*_*dan 48

试试看.promise()的jQuery文档

这应该工作:

$('div').fadeOut(1000).promise().done(function() {
   alert('all done');
});
Run Code Online (Sandbox Code Playgroud)

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


sam*_*son 18

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

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

JSFiddle上查看它

  • 实际上不应该是(numDivs--> 1)返回; (4认同)