Jak całkowicie usunąć okno dialogowe po zamknięciu
Gdy operacja ajax nie powiedzie się, tworzę nowy div z błędami, a następnie wyświetlam go w oknie dialogowym. Gdy okno dialogowe jest zamknięte chciałbym całkowicie zniszczyć i usunąć div ponownie. Jak mogę to zrobić? Mój kod wygląda w tej chwili mniej więcej tak:
$('<div>We failed</div>')
.dialog(
{
title: 'Error',
close: function(event, ui)
{
$(this).destroy().remove();
}
});
Kiedy uruchamiam to okno dialogowe wyświetla się poprawnie, ale po jego zamknięciu okno dialogowe jest nadal widoczne w html(za pomocą FireBug). Co mi umyka? Coś, o czym zapomniałem?
Update: właśnie zauważyłem mój kod daje mi błąd w konsoli firebug.
Ktoś może mi pomóc?$(this).destroy nie jest funkcją
Update: jeśli zrobię tylko $(this).remove()
zamiast tego, element zostanie usunięty z html. Ale czy jest całkowicie usunięty z DOM? Czy też muszę najpierw wywołać funkcję destroy?
7 answers
$(this).dialog('destroy').remove()
Spowoduje to zniszczenie okna dialogowego, a następnie całkowite usunięcie div, który był "hostingiem" okna z DOM
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-19 10:48:31
Dlaczego chcesz go usunąć?
Jeśli ma to zapobiec tworzeniu wielu instancji, po prostu użyj następującego podejścia...
$('#myDialog')
.dialog(
{
title: 'Error',
close: function(event, ui)
{
$(this).dialog('close');
}
});
A gdy pojawi się błąd, zrobisz to...
$('#myDialog').html("Ooops.");
$('#myDialog').dialog('open');
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-18 17:06:43
$(dialogElement).empty();
$(dialogElement).remove();
This fixes it for real
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-23 13:34:26
Brzydkie rozwiązanie, które działa jak urok dla mnie:
$("#mydialog").dialog(
open: function(){
$('div.ui-widget-overlay').hide();
$("div.ui-dialog").not(':first').remove();
}
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-15 14:19:55
Możesz użyć
$(dialogElement).empty();
$(dialogElement).remove();
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-27 15:24:30
This is worked for me
$('<div>We failed</div>')
.dialog(
{
title: 'Error',
close: function(event, ui)
{
$(this).dialog("close");
$(this).remove();
}
});
Zdrówko!
PS: miałem nieco podobny problem i powyższe podejście rozwiązało go.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-13 12:42:48
Używam tej funkcji we wszystkich moich projektach js
You call it: hideAndResetModals ("#IdModalDialog")
Definiujesz jeśli:
function hideAndResetModals(modalID)
{
$(modalID).modal('hide');
clearValidation(modalID); //You implement it if you need it. If not, you can remote this line
$(modalID).on('hidden.bs.modal', function ()
{
$(modalID).find('form').trigger('reset');
});
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-14 16:07:18