2009-11-11 22 views
6

Tworzę trzy modalne okna dialogowe podczas ładowania strony (przy użyciu $(document).ready(function() {). Tworzę te okna dialogowe, wywołując metodę setDialogWindows() i przekazuję ją div dla okna dialogowego. Dialog jest tworzenie kodu poniżej:Jak odtworzyć okno dialogowe jquery po zniszczeniu

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'); 
    } 
    } 
}); 
} 

będę oszczędzić html dialogowe, ale nie ma niektórych funkcji jquery drag/drop, że chcę być całkowicie zresetować, gdy użytkownik kliknie przycisk Anuluj. Stąd $(this).dialog('destroy'). Jednak gdy kliknę link ponownie, aby otworzyć okno dialogowe, nie pojawi się. Rozumiem, że dzieje się tak dlatego, że nie wprowadziłem go ponownie, ale naprawdę nie mogę tego zrobić, ponieważ okna dialogowe są tworzone podczas ładowania strony. Próbowałem dodanie wywołanie rekurencyjne sortuje do anulowanie funkcji takich jak:

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

Ale to nie działa - nadal nic nie otwiera się po kliknięciu na link, który powinien go otworzyć. Czy istnieje sposób na ponowne utworzenie okna dialogowego? Wszelkie pomysły na temat tego, gdzie powinienem ponownie zainicjować okno dialogowe, jeśli jedynym miejscem, w którym teraz to robię, jest dokument.ready?

Dzięki.

Odpowiedz

4

Można przenieść setDialogWindows do obsługi kliknij i obróć AutoOpen true, coś takiego:

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

będzie to zainicjować dialog na każde kliknięcie, i zniszczyć go, gdy jest zamknięta.

Można również po prostu otworzyć oddzielne okna dialogowe, jeden z funkcją przeciągania i upuszczania, a drugi bez niego.

Powiązane problemy