2011-05-09 3 views
2

다양한 AJAX 기능의 로딩 오버레이로 대화 상자를 사용하고 있지만 대화 상자에 애니메이션이 표시되거나 숨겨진 경우 AJAX 기능이 실행될 때까지 대화 상자가 열리거나 닫히지 않습니다 완전한. 여기 jQuery UI 애니메이션 대화 상자 표시/숨기기 문제

은 내가 사용하고있는 (간체) 코드 :

$("#loading_dialog").dialog(
{ 
    show: "fade", 
    hide: "fade", 
    closeOnEscape: false, 
    stack: false, 
    draggable: false, 
    height: 421, 
    width: 500, 
    modal: false, 
    position: {my: 'right', at: 'left', of: '#side_div', offset: "2 0"}, 
    resizable: false, 
    dialogClass: 'loading', 
    zIndex: 900, 
    autoFocus: false 
}); 

$("#start_ajax").click(function() 
{ 
    $("#loading_dialog").dialog("open"); 

    $.when(ajaxFunction()) 
    .then(function() 
    { 
    //do stuff 
    $("#loading_dialog").dialog("close"); 
    }) 
    .fail(function() 
    { 
    //handle error 
    }); 
}); 

#loading_dialogajaxFunction()에서 호출이 완료 될 때까지 열리지 않습니다,하지만 난 대화 상자 초기화에서 쇼 옵션을 주석 때 즉시 않습니다. 대화 상자를 닫을 때도 마찬가지입니다.

나만인가?

답변

0
$.when(ajaxFunction()) 

이 문제가됩니다. 아약스가 끝날 때까지 기다리지 말고, 아약스 콜백 함수를 활용하십시오. AJAX에 대한 전체적인 생각은 여러분이 명시 적으로하고있는 것을 막는 것이 아닙니다.

스틱이 : 아약스 콜백에

$("#loading_dialog").dialog("close"); 

.

+0

그게 다행 이네. :) – tim

관련 문제