Soy muy nuevo en jQuery y trato de ejecutar un cuadro de diálogo jQueryUI bastante simple en mi aplicación PHP. En la consola de Firebug me sale el error:jQueryUI - excepción no detectada: no se pueden llamar a los métodos
uncaught exception: cannot call methods on dialog prior to initialization; attempted to call method 'open'
Aquí está mi código:
$(function() {
$("#dialog").dialog({
autoOpen: false,
show: "blind",
hide: "explode"
});
$("#opener").live('click',function() {
$("#dialog").dialog("open");
return false;
});
});
he hecho un poco de google en el error y no mucho aparecido, excepto que jquery.ui.js
está generando el error con:
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 + "'";
}
...
¿Alguna idea? Agradezco cualquier ayuda sobre lo que es este mensaje de error y cómo resolverlo.
ACTUALIZACIÓN: Intenté comentar las opciones de mostrar/ocultar y eso no tuvo ningún efecto en mi problema. A continuación se muestra el código 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 -->
Este código HTML está incluido en un archivo PHP, que se incluye en otro archivo PHP.
Parece que jQuery-UI piensa que no ha inicializado el cuadro de diálogo antes de llamar a su método abierto. Quitaría las opciones algo exóticas para mostrar y ocultar que usaste, para reducir si ese es el problema. También asegúrese de tener un elemento con el id 'diálogo' en su marcado. Si eso no ayuda, tendrá que proporcionar el marcado real que está utilizando para que podamos depurarlo. – Thomas
Hola Thomas, eliminé las opciones mostrar/ocultar (sin efecto) y pegué mi HTML arriba, gracias – themerlinproject
Creo que tiene algo que ver con mi última frase "el HTML está incluido en un archivo PHP, que está INCLUIDO EN otro PHP archivo".He tenido problemas con jQuery y PHP includes y, como resultado, he comenzado a usar live() para hacer que las funciones estén disponibles para futuros contenidos ajax (como este div). No sé por qué no funciona aquí. – themerlinproject