2011-04-14 67 views
1

我想在一個時間間隔內關閉一個jQuery UI對話框。我所看到的似乎應該有效,但由於某種原因它不會。我在模態窗口內部設置了進度條動畫時遇到了一些麻煩,但是我明白了。既然那不想以正常的方式製作動畫,我想知道對話是否也不想以正常方式關閉。
注意:它總是讓它「做它!」。如何關閉間隔內的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

裏面你有這樣的代碼被稱爲後的DOM已經被加載?我假設如此或$("#progress-bar").progressbar({ /*...*/ });$("#modal-message").dialog({ /*...*/ });可能實際上不會做任何事情。

也就是說,嘗試在變量存儲對話框,如下所示:

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

然後引用,在你的函數:

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

這個工作很好,謝謝。是的,代碼在DOM被加載後被調用。 – 2011-04-14 19:21:32

0

嘗試把:

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

$(function() {...})