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文件中。
好的,这与我将对话框DIV放在一个PHP文件上,这个文件在我的JS被加载时尚未加载。所以我将对话框的DIV移到了更高的页面,而且该按钮现在可以在我的应用程序中的任何页面上运行。我希望这可以帮助别人。
我得到了同样的错误。这种固定对我来说,从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"); }
我用另一个错误感谢提示 – 2017-06-20 06:31:53
我有同样的错误,并且probleme是代码的顺序! 你必须但你的JavaScript后的HTML代码:)。
在我的情况下,与Mootools(经典Joomla,对吧?)的JS冲突。所以我去了main.js,改变这一行:
$(function() {
这一个:
jQuery(function ($) {
哪个挣扎main.js你修改 – 2014-01-27 15:46:00
@AalexGabi,我不记得了,但任何JS jQuery的文件不应该?当你同时使用Mootools和jQuery时,从$开始。你应该指定你真的是$作为jQuery对象。 – 2014-01-30 14:30:54
看起来像jQuery的UI认为你没有初始化之前调用它的open方法对话框。我会删除用于展示和隐藏的某些奇特选项,以便缩小这些问题。还要确保你的标记中有一个id为'dialog'的元素。如果这没有帮助,你将不得不提供你正在使用的实际标记,所以我们有机会进行调试。 – Thomas 2010-09-30 05:03:21
嗨托马斯,我删除了显示/隐藏选项(没有效果),并粘贴了我的HTML上面,谢谢 – themerlinproject 2010-09-30 05:09:21
我认为这与我的最后一句话有关“HTML包含在PHP文件中,这是包含在另一个PHP文件”。我已经解决了jQuery和PHP包含的问题,因此我开始使用live()为将来的Ajax内容(如div)提供函数。我不知道为什么它不在这里工作。 – themerlinproject 2010-09-30 05:12:49