Как полностью удалить диалог при закрытии
когда операция ajax завершается неудачей, я создаю новый div с ошибками, а затем показываю его как диалоговое окно. Когда диалог будет закрыт, я хотел бы полностью уничтожить и удалить div снова. Как я могу это сделать? Мой код выглядит примерно так на данный момент:
$('<div>We failed</div>')
.dialog(
{
title: 'Error',
close: function(event, ui)
{
$(this).destroy().remove();
}
});
когда я запускаю это диалоговое окно отображается правильно, но когда я закрываю его диалоговое окно по-прежнему отображается в html (с помощью FireBug). Чего мне здесь не хватает? Что-то у меня есть забыли?
обновление: просто заметил, что мой код дает мне ошибку в консоли firebug.
$(этот).уничтожить-это не функция
кто-нибудь может мне помочь?
обновление: если я просто $(this).remove() вместо этого элемент удаляется из html. Но полностью ли он удален из DOM? Или мне как-то нужно сначала вызвать эту функцию уничтожения?
7 ответов:
$(this).dialog('destroy').remove()Это уничтожит диалог, а затем удалите div, который был" хостинг " диалог полностью из DOM
почему вы хотите удалить его?
Если это необходимо для предотвращения создания нескольких экземпляров, то просто используйте следующий подход...
$('#myDialog') .dialog( { title: 'Error', close: function(event, ui) { $(this).dialog('close'); } });и когда возникает ошибка, вы могли бы сделать...
$('#myDialog').html("Ooops."); $('#myDialog').dialog('open');
уродливое решение, которое работает как шарм для меня:
$("#mydialog").dialog( open: function(){ $('div.ui-widget-overlay').hide(); $("div.ui-dialog").not(':first').remove(); } });
это работает для меня
$('<div>We failed</div>') .dialog( { title: 'Error', close: function(event, ui) { $(this).dialog("close"); $(this).remove(); } });Ура!
PS: у меня была несколько похожая проблема, и приведенный выше подход решил ее.
Я использую эту функцию во всех моих проектах js
вы это называете: hideAndResetModals ("#IdModalDialog")
ты определись, если:
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'); }); }
Comments