2009-11-11 19 views
6

Estoy creando tres cuadros de diálogo modales en la carga de la página (usando $(document).ready(function() {). Creo estos diálogos llamando a un método setDialogWindows(), y le paso el div para el diálogo. código de creación de diálogo es el siguiente:Cómo recrear el diálogo de jquery después de destruir

function setDialogWindows($element) { 
$element.dialog({ 
    autoOpen: false, 
    modal: true, 
    show: 'blind', 
    hide: 'blind', 
    width: 600, 
    resizable: false, 
    buttons: { 
    Cancel: function() { 
    $(this).dialog('destroy'); 
    }, 
    'Save': function() { 
    $(this).dialog('close'); 
    } 
    } 
}); 
} 

me ahorraré el html de diálogo, pero hay algunas funciones jQuery arrastrar/soltar que quiero restablecerá completamente cuando el usuario hace clic en Cancelar. De ahí el $(this).dialog('destroy'). Sin embargo, cuando hago clic en el enlace nuevamente para abrir el cuadro de diálogo, no aparece. Me doy cuenta de que esto se debe a que no lo he vuelto a introducir, pero realmente no puedo hacer eso porque los diálogos se crean en la carga de la página. He intentado añadir una llamada recursiva de clases a la función Cancelar tales como:

Cancel: function() { 
    $(this).dialog('destroy'); 
    setDialogWindows($element); 
    }, 

Pero eso no funciona - todavía nada se abre al hacer clic sobre el enlace que debe abrirlo. ¿Hay alguna manera de recrear el cuadro de diálogo? ¿Alguna idea sobre dónde debería reiniciar el diálogo si el único lugar donde lo hago ahora está en document.ready?

Gracias.

Respuesta

4

Puede mover setDialogWindows en un controlador de clic y girar a Autoopen cierto, algo así como:

$('path/to/clickable/elements').click(function(){ 
    setDialogWindows($element); 
}); 

Esto iniciará el diálogo en cada clic, y destruirlo cuando está cerrado.

También podría abrir cuadros de diálogo separados, uno con la funcionalidad de arrastrar y soltar y otro sin él.

Cuestiones relacionadas