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

<p>когда операция ajax завершается неудачно, я создаю новый div с ошибками, а затем показываю его в виде диалога. когда диалоговое окно закрыто, я хотел бы полностью уничтожить и снова удалить div. как я могу это сделать? мой код выглядит примерно так:</p><pre><code>$('we failed') .dialog( { title: 'error', close: function(event, ui) { $(this).destroy().remove(); } }); </code></pre><p>когда я запускаю это, диалоговое окно отображается правильно, но когда я закрываю его, диалоговое окно все еще видно в html (используя firebug). что мне здесь не хватает? что-то я забыл?</p><p><strong> обновление: </strong>просто заметил, что мой код выдает ошибку в консоли firebug.</p><blockquote> <p>$ (this) .destroy не является функцией </blockquote>кто-нибудь может мне помочь?<strong> обновление: </strong>если вместо этого я просто использую функцию $(this).remove()</code>, элемент будет удален из html. но полностью ли он удален из dom? или мне как-то нужно сначала вызвать эту функцию уничтожения?</p>

<pre><code>$(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(); } }); </code></pre>

<p>вы можете использовать</p><pre><code>$(dialogelement).empty(); $(dialogelement).remove(); </code></pre>

<p>это работает для меня</p><pre><code>$('we failed') .dialog( { title: 'error', close: function(event, ui) { $(this).dialog("close"); $(this).remove(); } }); ура!<strong> ps: </strong>у меня была несколько похожая проблема, и вышеуказанный подход решил ее.

я использую эту функцию во всех моих проектах 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'); }); } </code></pre>