2014-09-07 4 views
0

두 함수가 있는데, 각각에는 애니메이션이 있습니다. 첫 번째 함수의 모든 애니메이션이 완료되면 두 번째 함수를 호출하려고합니다. 나는 아무것도 시도하지 않고 함수 1 내부의 애니메이션이 가변적 인 타이밍을 가지기 때문에이 애니메이션이 끝나면 특정 애니메이션을 사용할 수 없다고 말합니다. 동시에 모든 애니메이션을 계속 재생합니다. 누군가가 나를 도울 수 있으면 고맙겠습니다. jQuery를 사용다른 함수의 모든 애니메이션이 완료된 후에 함수를 호출하십시오.

function goToSubMenu1(subMenu1Id,currentPage,selectedButtonText){ 

    closeCurrentPage(subMenu1Id); 
    openTargetPage(subMenu1Id,currentPage,selectedButtonText); 
} 

//-------------------------------------------------------------open page 
function openTargetPage(subMenu1Id,currentPage,selectedButtonText){ 
    if(currentPage=='homePage'){ 
     toHomePageMini(); 
     subMenu1(subMenu1Id,selectedButtonText); 
     pageInAnimation('homePage'); 
     pageInAnimation('subMunu1Container'); 
     $('#'+subMenu1Id).css({'display':'none'}); 
    } 
    else{ 
     subMenu1(subMenu1Id,selectedButtonText); 
     pageInAnimation('homePage'); 
     pageInAnimation('subMunu1Container'); 
     $('#'+subMenu1Id).css({'display':'none'}); 
    } 
} 
//-------------------------------------------------------------close page 
function closeCurrentPage(subMenu1Id){ 
    pageOutAnimation('homePage'); 
    pageOutAnimation('subMunu1Container'); 
    $('#'+subMenu1Id).css({'display':'block'}); 
} 
+0

, 그들은, 콜백을 약속하거나이 완료되면 알 비슷한 반환해야합니다. – adeneo

답변

1

에서 completecallback 내가이 일을 올바른 방법은 함수 콜백 실행 코드 후 실행을 사용하는 것입니다 생각합니다. 이 도움이 될해야합니다

http://api.jquery.com/jquery.callbacks/

또 다른 방법은 jQuery를 함께 .each 방법을 사용하는 것입니다 - 비동기 실행하려면 (이 방법을 당신이해야으로 정렬하여 요소의 선택 목록을 만들기 위해 우리에게 애니메이션 기능을 보여주는 당신은해야합니다 귀하의 수단)

http://api.jquery.com/jquery.each/

0

, 당신은 변수 이름을 지정 (또는하지, 아래의 예제로 사용) 함수에 다음 타임 라인 실행을 제공 할 수 있습니다 : 이 내 코드입니다.

when() - then() 쌍을 사용하여 수행 할 수 있습니다. 예를 들어

:

$.when(function() {}).then(function() {}); 
+0

함수가 지연된 약속을 반환하는 경우에만 작동합니다 * – adeneo

0

난 당신의 코드를 읽어 보지 않았,하지만 당신은 당신이 원하는 것을 달성하기 원한다면, 당신은 delay() 기능을 사용할 수 있습니다. 첫 번째 애니메이션의 소요 시간을 알고 있다면 delay()의 매개 변수를 첫 번째 애니메이션 시간보다 오래 설정하면 작업이 완료됩니다. 당신이 .animate() 방법을 사용하는 경우

0

, 그것은 선언

관련 문제