2013-08-05 20 views
16

Jaka jest różnica między .dialog("close") i .dialog("destroy") w jquery-ui?Różnica między .dialog ("zamknij") i .dialog ("zniszcz")

Mam skrypt, w którym poprzedni programista używał .dialog("destroy"), ale teraz muszę wykonać pewne czynności po zamknięciu okna dialogowego. Znalazłem beforeclose, który jest wywoływany z .dialog("close"), a nie z .dialog("destroy"). Więc muszę zmienić metodę z destroy na close, aby działała.

Czy jest coś, czego będę brakować, jeśli użyję .dialog("close"), a nie .dialog("destroy")?

PS: Okno wykorzystuje niestandardowe przyciski do zamykania się, a .dialog("close") jest nazywany na razie kliknięcia przycisku

+2

Zacznij tutaj: http://api.jqueryui.com/dialog/#method-close – Prasanth

+0

Thankyou @Parsanth że jest bardzo pomocna. Mam dużo informacji, ale nic nie znalazłem: p .. https://www.google.com/search?q=difference+between+dialog+close+i+dialog+destroy – zzlalani

Odpowiedz

23

close opuszcza okno skonfigurowany, ale niewidoczny, więc można ponownie otworzyć go ponownie z .dialog('open').

destroy całkowicie dekonfiguruje okno dialogowe. Usunie wszystkie elementy interfejsu użytkownika, które zostały dodane do DOM i wszelkie powiązane procedury obsługi zdarzeń.

destroy nieusunąć element, który odbędzie zawartość w oknie dialogowym (czyli element, który nazywamy .dialog on)

5

Od Docs:

zniszczyć:

Całkowicie usuwa funkcję okna dialogowego. Spowoduje to przywrócenie elementu do stanu przed procesem wstępnym.

blisko:

Zamyka okno dialogowe, które może ponownie otwarte, gdy są potrzebne.

8

Pamiętaj, jeśli używasz okna dialogowego do wprowadzania formularzy, że zniszczenie go NIE spowoduje usunięcia danych wejściowych, więc jeśli sprawdzasz poprawność za pomocą: wejściowego pseudo-selektora, elementy, które "zniszczyłeś", zostaną zweryfikowane. W tym miejscu przydatna jest metoda .remove().

Można dodać niestandardowe zdarzenie zamknięcia, które niszczy okno dialogowe i usuwa wszelkie formularze znajdujące się w jego środku, aby zapobiec ich dalszemu sprawdzaniu.

$dialog = $("#your_dialog_id"); 
$dialog.dialog('option', { 
     title: "title", 
     close: function (event, ui) { 
      $dialog.find("form").remove(); 
      $dialog.dialog('destroy'); 
     } 
    });