2011-02-02 11 views
14

¿Alguien sabe cómo crear un cuadro de diálogo jQuery en una función? No puedo encontrar un atributo para configurar el mensaje ... En cada ejemplo que encontré, el diálogo se ha escrito estáticamente en el código en una etiqueta div. Sin embargo, quiero crearlo dinámicamente, así que necesito saber cómo crear un diálogo en una función.Cómo crear el cuadro de diálogo jQuery en la función

No es ningún problema para establecer el título:

<script> 
    // increase the default animation speed to exaggerate the effect 
    $.fx.speeds._default = 1000; 
    $(function() { 
     $("#dialog").dialog({ 
      autoOpen: false, 
      show: "blind", 
      hide: "explode" 
     }); 

     $("#opener").click(function() { 
      //$("#dialog").dialog("open"); 
      $(this).dialog({ title: 'Please confirm deletion!' }); 
      return false; 
     }); 
    }); 
    </script> 
</head> 
<body> 

tengo la documentación y algunos ejemplos here.

Gracias por ayudar chicos.

Saludos, doonot

============================= [Solución] ====== ============================

Gracias a todos los que respondieron a estas preguntas. Esto es lo que quería:

function createDialog(title, text) { 
    return $("<div class='dialog' title='" + title + "'><p>" + text + "</p></div>") 
    .dialog({ 
     resizable: false, 
     height:140, 
     modal: true, 
     buttons: { 
      "Confirm": function() { 
       $(this).dialog("close"); 
      }, 
      Cancel: function() { 
       $(this).dialog("close"); 
      } 
     } 
    }); 
} 

Y se le puede llamar, por ejemplo, como esto (al hacer clic en una imagen):

<img src="delete.png" onClick="createDialog('Confirm deletion!', 'Do you really want to delete this package?')"> 

Respuesta

11
function createDialog(title, text, options) { 
    return $("<div class='dialog' title='" + title + "'><p>" + text + "</p></div>") 
    .dialog(options); 
} 
2

He utilizado este con, además, plugin de jQuery tmpl.

var confirmTemplate = jQuery.template("<div class='dialog' title='${title}'><p>${text}</p></div>"); 

    function showDialog(options) { 
     if (options && options.data && options.dialog) { 
      var dialogOptions = jQuery.extend({}, { modal: true, resizable: false, draggable: false }, options.dialog); 
      return jQuery.tmpl(confirmTemplate, options.data).dialog(dialogOptions); 
     } 
    } 

    function hideDialog (item) { 
     if (!item.jQuery) item = $(item); 
     item.dialog("close").dialog("destroy").remove(); 

} 

uso:

showDialog({ 
      data: { 
         title: "My Title", 
         text: "my Text" 
        } 
      dialog: { 
        myDialog: "options" 
      } 
      }); 
+0

Gracias por la respuesta rápida. ¿Podría dar un ejemplo de cómo lo usa en su código? Solo recibo un mensaje de error de sintaxis en línea ": {..." – doonot

6

Aquí está un ejemplo sencillo:

function openDialog(message) { 
    if ($('#dialog').length == 0) { 
     $(document.body).append('<div id="dialog">'+message+'</div>'); 
    } else { 
     $('#dialog').html(message); 
    } 
    $("#dialog").dialog({ 
     autoOpen: false, 
     show: "blind", 
     hide: "explode" 
    }); 
    $("#dialog").dialog("open"); 
} 
Cuestiones relacionadas