Ich bin sehr neu in jQuery und versuche, ein ziemlich einfaches jQueryUI-Dialogfeld in meiner PHP-Anwendung auszuführen. In Firebug Konsole erhalte ich die Fehlermeldung:jQueryUI - nicht abgefangene Ausnahme: Methoden können nicht aufgerufen werden
uncaught exception: cannot call methods on dialog prior to initialization; attempted to call method 'open'
Hier ist mein Code:
$(function() {
$("#dialog").dialog({
autoOpen: false,
show: "blind",
hide: "explode"
});
$("#opener").live('click',function() {
$("#dialog").dialog("open");
return false;
});
});
Ich habe auf den Fehler etwas googeln und nicht viel aufgedreht, außer dass jquery.ui.js
wird, um den Fehler zu erzeugen mit:
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 + "'";
}
...
Irgendwelche Ideen? Ich freue mich über jede Hilfe, was diese Fehlermeldung und wie es zu lösen ist.
UPDATE: Ich habe versucht, die show/hide-Optionen zu kommentieren, und das hatte keine Auswirkungen auf mein Problem. Im Folgenden finden Sie die 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 -->
Dieser HTML-Code in einer PHP-Datei enthalten ist, die in einer anderen PHP-Datei enthalten ist.
Sieht aus wie jQuery-UI denkt, dass Sie nicht den Dialog vor dem Aufruf seiner offenen Methode initialisiert. Ich würde die etwas exotischen Optionen zum Anzeigen und Verbergen, die Sie verwendet haben, entfernen, um einzugrenzen, wenn dies das Problem ist. Stellen Sie außerdem sicher, dass Sie ein Element mit der ID "dialog" in Ihrem Markup haben. Wenn das nicht hilft, müssen Sie das tatsächliche Markup bereitstellen, das Sie verwenden, damit wir debuggen können. – Thomas
Hi Thomas, ich habe die show/hide-Optionen entfernt (kein Effekt) und meinen HTML-Code oben eingefügt, danke – themerlinproject
Ich denke, es hat etwas mit meinem letzten Satz zu tun. "Der HTML-Code ist in einer PHP-Datei enthalten, die in einem anderen PHP enthalten ist Datei".Ich habe Probleme mit jQuery und PHP-Includes durchgemacht und als Ergebnis habe ich begonnen, live() zu verwenden, um Funktionen für zukünftige Ajax-Inhalte verfügbar zu machen (wie dieses div). Ich weiß nicht, warum es hier nicht funktioniert. – themerlinproject