2011-04-14 5 views
1

간격 내에서 jQuery UI 대화 상자를 닫으려고합니다. 나는 그것이 작동해야하는 것처럼 보이지만 웬일인지 그것을하지 않을 것이다. 모달 창 내부에 진행률 표시 줄에 애니메이션을 적용하는 데 문제가 있었지만 알아 냈습니다. 이후 정상적인 방법으로 애니메이션 싶지 않았어, 나는 대화 상자가 정상적인 방법 중 하나를 닫고 싶지 않아 궁금해.
참고 : 항상 "Made it!"이됩니다.간격 내에서 jQuery UI 대화 상자를 닫는 방법?

if(data.version != localStorage.getItem("Sync Version")) { 
     //Start the progress bar. 
     $("#progress-bar").progressbar({ 
      value:0, 
      complete : function(event, ui) { 
       $("#modal-message").dialog("close"); 
      } 
     }); 

     //Modal Width 
     modalWidth = 400; 

     //Throw up a modal. 
     $("#modal-message").dialog({ 
      height: 300, 
      width: modalWidth, 
      modal: true 
     }); 

     //Queries to execute on initial sync. 
     qt = 0; 
     queryThreshold = 4000; 

     //Start the interval 
     $(function() { 
      var progress = setInterval(function() { 
       var qval = Math.floor(100*(qt/queryThreshold)); 

       if (qval == 100) { 
        console.log("Made it!"); 
        $("#modal-message").dialog("close"); 
        clearInterval(progress); 
       } else { 
        //$("#progress-bar").progressbar("option", "value", qval); 
        $("#progress-bar .ui-progressbar-value").animate({width : qval+"%"}, modalWidth); 
       }_ 
      },750); 
     }); 

     //Save the newest sync verison. 
     localStorage.setItem("Sync Version", data.version); 

     //Perform a full sync. 
     full_sync(); 
    } 

답변

1

내부

$("#modal-message").dialog({ 
     height: 300, 
     width: modalWidth, 
     modal: true 
    }); 

당신이 코드가 DOM이로드 된 후 를 호출되고 있습니까? 그렇게 생각하거나 $("#progress-bar").progressbar({ /*...*/ });$("#modal-message").dialog({ /*...*/ });은 실제로 아무 것도 수행하지 않을 수 있습니다. 말했다

, 그래서 같은 변수에 대화를 저장하려고 : 다음

var mydialog = $("#modal-message").dialog({ 

및 함수에 있음 참조 :

//$("#modal-message").dialog("close"); 
//becomes: 
mydialog.dialog("close"); 
+0

이것은, 덕분에 큰했다. 그리고 네, 코드는 DOM이로드 된 후에 호출됩니다. –

0

시도두고 다음 $(function() {...})

관련 문제