2010-09-30 88 views
25

我對jQuery很陌生,試圖在我的PHP應用程序中運行一個非常簡單的jQueryUI對話框。在Firebug控制檯我得到的錯誤:jQueryUI - 未捕獲的異常:無法調用方法

uncaught exception: cannot call methods on dialog prior to initialization; attempted to call method 'open' 

這裏是我的代碼:

$(function() { 
    $("#dialog").dialog({ 
     autoOpen: false, 
     show: "blind", 
     hide: "explode" 
    }); 

    $("#opener").live('click',function() { 
     $("#dialog").dialog("open"); 
     return false; 
    }); 
}); 

我做了一些谷歌搜索上的錯誤並沒有太大的止跌回升,除了jquery.ui.js與生成錯誤:

if (isMethodCall) { 
    this.each(function() { 
     var instance = $.data(this, name); 
     if (!instance) { 
      throw "cannot call methods on " + name + " prior to initialization; " + 
"attempted to call method '" + options + "'"; 
     } 
... 

任何想法?我很感激這個錯誤信息的任何幫助,以及如何解決它。

更新:我嘗試註釋掉顯示/隱藏選項,但這並沒有對我的問題有任何影響。以下是HTML:

<div class="demo"> 

    <div id="dialog" title="Basic dialog"> 
     <p>This is an animated dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.</p> 
    </div> 

    <button id="opener">Open Dialog</button> 

</div><!-- End demo --> 

此HTML包含在PHP文件中,該文件包含在另一個PHP文件中。

+1

看起來像jQuery的UI認爲你沒有初始化之前調用它的open方法對話框。我會刪除用於展示和隱藏的某些奇特選項,以便縮小這些問題。還要確保你的標記中有一個id爲'dialog'的元素。如果這沒有幫助,你將不得不提供你正在使用的實際標記,所以我們有機會進行調試。 – Thomas 2010-09-30 05:03:21

+0

嗨托馬斯,我刪除了顯示/隱藏選項(沒有效果),並粘貼了我的HTML上面,謝謝 – themerlinproject 2010-09-30 05:09:21

+1

我認爲這與我的最後一句話有關「HTML包含在PHP文件中,這是包含在另一個PHP文件」。我已經解決了jQuery和PHP包含的問題,因此我開始使用live()爲將來的Ajax內容(如div)提供函數。我不知道爲什麼它不在這裏工作。 – themerlinproject 2010-09-30 05:12:49

回答

21

好的,這與我將對話框DIV放在一個PHP文件上,這個文件在我的JS被加載時尚未加載。所以我將對話框的DIV移到了更高的頁面,而且該按鈕現在可以在我的應用程序中的任何頁面上運行。我希望這可以幫助別人。

+7

@ user410341 - 很高興你知道了(我很高興能幫助解決其他問題)。如果你願意,你可以接受你自己的答案來幫助人們在未來迅速找到答案。 :-) – JasCav 2010-09-30 14:30:15

+0

同樣的問題發生在我身上,但調用了「remove」函數(這調用了'destroy'方法,你對這個問題是正確的,我已經修復了$(document).ready(function(){。 ..});圍繞「刪除」呼叫 – gotqn 2013-01-11 07:49:20

1

採取在我而言,我使用:jQuery UI的 - v1.9.2的,而我只有:

$this.sortable("destroy"); 

,我也得到:

未捕獲錯誤:在初始化之前無法調用可排序的方法;試圖調用方法「破壞」

我固定時添加驗證:

if ($this.data("ui-sortable")) 
{ $this.sortable("destroy"); } 
+0

我用另一個錯誤感謝提示 – 2017-06-20 06:31:53

0

我有同樣的錯誤,並且probleme是代碼的順序! 你必須但你的JavaScript後的HTML代碼:)。

0

在我的情況下,與Mootools(經典Joomla,對吧?)的JS衝突。所以我去了main.js,改變這一行:

$(function() { 

這一個:

jQuery(function ($) { 
+0

哪個掙扎main.js你修改 – 2014-01-27 15:46:00

+0

@AalexGabi,我不記得了,但任何JS jQuery的文件不應該?當你同時使用Mootools和jQuery時,從$開始。你應該指定你真的是$作爲jQuery對象。 – 2014-01-30 14:30:54

相關問題