2013-03-03 85 views
0

我以前使用過下面的腳本,它工作完美。我現在得到以下錯誤:簡單的jQueryUI對話框導致錯誤1.9

Error: cannot call methods on dialog prior to initialization; attempted to call method 'close'. 
jquery-latest.js (line 507) 

如果您升級到jQueryUI 1.10.1,它不會再導致錯誤。通常情況下,我會放過它,升級,而不用擔心它。這個問題的問題在於它在過去有效,所以爲什麼現在不讓我發瘋呢?我必須做一些與以前不同的傻事,但我看不到它。

<!doctype html> 
<html lang="en"> 
    <head> 
     <meta charset="utf-8" /> 
     <title>jQuery UI Dialog</title> 
     <script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script> 
     <link type="text/css" href="http://code.jquery.com/ui/1.9.0/themes/base/jquery-ui.css" rel="stylesheet" /> 
     <script src="http://code.jquery.com/ui/1.9.0/jquery-ui.js" type="text/javascript"></script> 
     <script> 
      $(function() { 
       $("#open").click(function(){$("#dialog").dialog('open');return false;}); 
       $("#dialog").dialog({ 
        modal: true, 
        autoOpen : false, 
        buttons: { 
         Ok: function() { 
          $(this).dialog("close"); 
         } 
        } 
       }); 
      }); 
     </script> 
    </head> 
    <body> 
     <button id="open">Click</button> 
     <div id="dialog" title="What ever"></div> 
    </body> 
</html> 
+1

如果用較新的版本沒有任何問題的工作必須與你正在使用的版本中的錯誤。我知道這會讓你發瘋,但這是網絡開發者的生活。東西不斷變化,有時甚至一小時一小時! – 2013-03-03 16:56:00

+0

原來,它使用jQuery 1.8.1完美地工作,不使用最新版本的jQuery! – user1032531 2013-03-03 17:00:49

+0

這並不重要。錯誤會一直引入,然後在更高版本中再次修復,但是您的問題提到它在jQuery 1.10.1中正確運行,所以我認爲它是通過錯誤修復解決的。 1.9中有許多已知的問題,這就是爲什麼1.9.1在不久之後發佈的原因。 – 2013-03-03 17:02:59

回答

0

我也有類似的問題,我通過定義對話框聲明之外我的按鈕陣列解決。

var buttonArray = {}; 
buttonArray["Ok"]=function() { $(this).dialog("close");} 

您的選項將成爲:

 
    modal: true, 
    autoOpen: false, 
    buttons: buttonArray