我是jQuery的新手,并试图在我的PHP应用程序中运行一个非常简单的jQueryUI对话框。在firebug控制台中,我收到错误:
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文件中。
答案 0 :(得分:22)
好吧,这与我将对话框DIV放在我加载JS时尚未加载的PHP文件这一事实有关。所以我将对话框的DIV移动到更高的页面,并且该按钮现在可以在我的应用程序的任何页面上运行。我希望这有助于其他人。
答案 1 :(得分:19)
我得到了同样的错误。这为我修好了,取自http://forum.jquery.com/topic/jquery-ui-model-dialog-close
$(".ui-dialog-content").dialog().dialog("close");
答案 2 :(得分:1)
就我而言,我使用:jQuery UI - v1.9.2,我只有:
$this.sortable("destroy");
我得到了:
未捕获错误:在初始化之前无法调用sortable上的方法;试图调用方法'destroy'
我在添加验证时修复了:
if ($this.data( "ui-sortable" ))
{ $this.sortable("destroy"); }
答案 3 :(得分:1)
在我的情况下,与Mootools(经典的Joomla,对吧?)存在JS冲突。所以我去了main.js并更改了这一行:
$(function () {
到这一个:
jQuery(function ($) {
答案 4 :(得分:0)
我遇到了同样的错误,问题就是代码的顺序!! 你必须在html代码之后使用你的javascript:)。