2010-08-06 24 views
18

Quiero crear un diálogo jQuery sobre la marcha. Estoy usando esto:Diálogo jQuery con contenido dinámico

var newDiv = $(document.createElement('div')); 
$(newDiv).html('hello there'); 
$(newDiv).dialog(); 

que luego tienen esto en la cabecera HTML:

<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script> 
<script type="text/javascript" src="js/jquery-ui-1.8.1.custom.min.js"></script> 

Cuando trato de ejecutar la JS en IE7 me sale el siguiente error en el $ (newDiv) .dialog(); línea: El objeto no admite esta propiedad o método.

Alguien sabe lo que está pasando?

Respuesta

56

funciona su código, puede probarlo here, eso significa que es probable que tenga una secuencia de comandos incluyen problema, asegúrese de que sus archivos están en una carpeta jslado de la página, o si se les pretende que sea de raíz del sitio , use /js en su lugar.

O, consider using a CDN.

Puede hacer que el código un poco más eficiente (me doy cuenta de que es sólo una prueba), así:

var newDiv = $(document.createElement('div')); 
newDiv.html('hello there'); 
newDiv.dialog(); 

Esto funciona porque newDiv es ya un elemento de jQuery, no hay razón para clonar el objeto cada vez ... o un poco más corto:

$('<div />').html('hello there').dialog(); 
+0

+1 para la demostración y la velocidad de la velocidad velocidad :) – Sarfraz

+0

Ya tengo una carpeta js debajo de la raíz que contiene jquery-1.4.2.min.js y jquery-ui-1.8.1.custom.min.js. También tengo otras cosas de jQuery (pestañas) que funcionan bien. ¿Esto no significa que mis referencias jQuery están bien? El código se llama a través de un evento onclick para un botón. – DEH

+0

He sustituido mis referencias js por las siguientes: y todo comenzó a funcionar. ¿Necesito algunos archivos .js adicionales en mi carpeta js, a pesar de que no son referencias directas a través de una etiqueta de script? – DEH

16

Aquí es una forma alternativa de crear diálogos y sus mensajes de forma dinámica:

 $('<div></div>').dialog({ 
     modal: true, 
     title: "Confirmation", 
     open: function() { 
      var markup = 'Hello World'; 
      $(this).html(markup); 
     }, 
     buttons: { 
      Ok: function() { 
      $(this).dialog("close"); 
      } 
     } 
     }); //end confirm dialog 

verlo en acción: http://jsfiddle.net/DYbwb/

+1

He agregado una línea después de cerrar la función para asegurarme de que la división creada recientemente se eliminó cuando se cerró el cuadro de diálogo. Ver http://jsfiddle.net/DYbwb/597/ – KMX

0

El código es bueno, lo que necesita es una referencia de jQuery y jQuery UI

<script src="https://code.jquery.com/jquery-1.12.4.js"></script> 
 
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

Cuestiones relacionadas