Kiedy operacja Ajax nie powiedzie się, tworzę nowy div z błędami, a następnie pokazuję go jako okno dialogowe. Po zamknięciu okna chciałbym całkowicie zniszczyć i ponownie usunąć element div. W jaki sposób mogę to zrobić? Mój kod wygląda teraz mniej więcej tak:
$('<div>We failed</div>')
.dialog(
{
title: 'Error',
close: function(event, ui)
{
$(this).destroy().remove();
}
});
Kiedy to uruchamiam, okno dialogowe wyświetla się poprawnie, ale kiedy je zamykam, okno dialogowe jest nadal widoczne w html (używając FireBug). Czego tu brakuje? Coś, o czym zapomniałem?
Aktualizacja: właśnie zauważyłem, że mój kod wyświetla błąd w konsoli firebuga.
$ (this) .destroy nie jest funkcją
Czy ktoś może mi pomóc?
Aktualizacja: jeśli to zrobię $(this).remove()
, element zostanie usunięty z HTML. Ale czy jest całkowicie usunięty z DOM? Czy w jakiś sposób muszę najpierw wywołać tę funkcję niszczenia?
źródło
.empty()
. Następnie możesz go ponownie użyć, jeśli ponownie wypełnisz zawartość poza kursem.destroy
konieczne? Czy usunięcie elementu nie zniszczy również okna dialogowego?Dlaczego chcesz to usunąć?
Jeśli ma to zapobiec tworzeniu wielu instancji, po prostu zastosuj następujące podejście ...
A kiedy wystąpi błąd, zrobisz ...
źródło
to naprawia to naprawdę
źródło
To działa dla mnie
Twoje zdrowie!
PS: Miałem nieco podobny problem i powyższe podejście go rozwiązało.
źródło
$(this).dialog("close");
znaku dialog po prostu nie zniknąłby. jQuery jest czasami bardzo dziwne.Brzydkie rozwiązanie, które dla mnie działa jak urok:
źródło
Możesz użyć
źródło
Używam tej funkcji we wszystkich moich projektach js
Nazywasz to: hideAndResetModals ("# IdModalDialog")
Ty określasz, jeśli:
źródło