Как полностью удалить диалог при закрытии

Когда операция ajax завершается неудачно, я создаю новый div с ошибками, а затем показываю его как диалог Когда диалоговое окно закрыто, я хотел бы полностью уничтожить и снова удалить div. Как я могу это сделать? Мой код выглядит примерно так:

$('<div>We failed</div>')
    .dialog(
    {
        title: 'Error',
        close: function(event, ui)
        {
            $(this).destroy().remove();
        }
    });

Когда я запускаю это, диалоговое окно отображается правильно, но когда я закрываю его, диалоговое окно все еще видно в html (используя FireBug). Что мне здесь не хватает? Что-то, что я забыл?

Обновление: Только что заметил, что мой код выдает ошибку в консоли Firebug.

$ (this) .destroy не является функцией

Кто-нибудь может мне помочь?

Обновление: Если я просто $(this).remove() Вместо этого элемент удаляется из HTML. Но полностью ли он удален из DOM? Или мне как-то нужно сначала вызывать эту функцию уничтожения?

130
задан Liam 8 May 2018 в 14:03
поделиться

2 ответа

$(this).dialog('destroy').remove()

Это уничтожит диалоговое окно, а затем полностью удалит div, который "размещал" диалоговое окно, из DOM

257
ответ дан 24 November 2019 в 00:22
поделиться

Почему вы хотите его удалить?

Если это необходимо для предотвращения создания нескольких экземпляров, просто используйте следующий подход ...

$('#myDialog') 
    .dialog( 
    { 
        title: 'Error', 
        close: function(event, ui) 
        { 
            $(this).dialog('close');
        } 
    }); 

И когда возникает ошибка, вы бы сделали ...

$('#myDialog').html("Ooops.");
$('#myDialog').dialog('open');
10
ответ дан 24 November 2019 в 00:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: