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



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



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


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



обновление: просто заметил, что мой код дает мне ошибку в консоли firebug.




$(этот).уничтожить-это не функция




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



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

530   7  

7 ответов:

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

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

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

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

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

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

$('#myDialog').html("Ooops.");
$('#myDialog').dialog('open');
$(dialogElement).empty();

$(dialogElement).remove();

это исправляет его для реального

уродливое решение, которое работает как шарм для меня:

$("#mydialog").dialog(
    open: function(){
        $('div.ui-widget-overlay').hide();
        $("div.ui-dialog").not(':first').remove();
}
});

вы можете использовать

$(dialogElement).empty();    
$(dialogElement).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

    Ничего не найдено.