2011-09-11 2 views
6

질문은 매우 간단합니다. jQuery로 둘 이상의 요소를 선택하고, 예를 들어 jQuery의 fadeOut() 함수를 사용하여 해당 요소를 숨기면 콜백 함수가 각 요소에 대해 두 번 호출됩니다. 하나의 콜백 만받는 방법이 있습니까?jQuery로 여러 요소 숨기기 및 하나의 콜백

이 작업을 수행하기 위해 현재 사용중인 코드는 아래에 붙여 넣습니다.

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

비슷한 질문

은 ( jQuery multiple animate() callback) 이전에 게시되어 있습니다 만,이 솔루션은 간단한 문제가 보이는에 대한 매우 복잡한 것 같다.

답변

16

당신은 $.when[docs] (deferred objects)를 사용할 수 있습니다 :

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

DEMO

을이 AFAIK 어떤 애니메이션과 함께 작동합니다.

+0

다른 방법이 있습니까? 그것은 주변을 둘러 보듯이 보입니다 ... 아니면 jQuery에서 적절한 방법으로 간주되어야하며 객체 만이 내 무지한 것입니까? –

+0

나는 다른 방법을 알지 못하고'.animate '문서는 아무것도 언급하지 않는다. –