使用jQuery隐藏多个元素并获得一个回调

问题非常简单。 如果我用jQuery选择两个或多个元素,例如,使用jQuery的fadeOut()函数来隐藏它们,则会调用两次回调函数(对于每个元素)。 有没有办法只收到一个回调?

我目前用于执行此任务的代码粘贴在下面。

$('#element-1, #element-2').fadeOut( 250, function() { /* Callback invoked twice. */ }); 

之前已经发布了类似的问题( jQuery multiple animate()回调 ),但对于看似简单的问题,解决方案似乎相当复杂。

您可以使用$.when [docs] ( 延迟对象 ):

 $.when($('#element-1, #element-2').fadeOut(250)).then(function() { // do something }); 

DEMO

这适用于任何动画afaik。