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.

$(this).destroy nie jest funkcją

Ktoś może mi pomóc?

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?

Author: Liam, 2010-05-19

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

 246
Author: lomaxx,
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');
 9
Author: Fiona - myaccessible.website,
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

 8
Author: Ghost1,
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();
}
});
 2
Author: cesar,
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();
 1
Author: user2994033,
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.

 0
Author: deb_,
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');  
    });
}
 0
Author: Sterling Diaz,
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