jQueryUI - 未捕获的异常:无法调用方法

jQueryUI - 未捕获的异常:无法调用方法

问题描述:

我对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

好的,这与我将对话框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

我得到了同样的错误。这种固定对我来说,从http://forum.jquery.com/topic/jquery-ui-model-dialog-close

$(".ui-dialog-content").dialog().dialog("close"); 

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

$this.sortable("destroy"); 

,我也得到:

未捕获错误:在初始化之前无法调用可排序的方法;试图调用方法“破坏”

我固定时添加验证:

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

我用另一个错误感谢提示 – 2017-06-20 06:31:53

我有同样的错误,并且probleme是代码的顺序! 你必须但你的JavaScript后的HTML代码:)。

在我的情况下,与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