Quando uma operação do ajax falha, eu crio uma nova div com os erros e a mostro como uma caixa de diálogo. Quando a caixa de diálogo estiver fechada, eu gostaria de destruir e remover completamente a div novamente. Como posso fazer isso? Meu código se parece com isso no momento:
$('<div>We failed</div>')
.dialog(
{
title: 'Error',
close: function(event, ui)
{
$(this).destroy().remove();
}
});
Quando eu executo isso, a caixa de diálogo aparece corretamente, mas quando eu a fecho, a caixa de diálogo ainda é visível no html (usando o FireBug). O que estou perdendo aqui? Algo que eu esqueci?
Atualização: Acabei de notar que meu código me apresenta um erro no console do firebug.
$ (this) .destroy não é uma função
Alguém capaz de me ajudar?
Atualização: Se eu fizer apenas isso $(this).remove()
, o item será removido do html. Mas é completamente removido do DOM? Ou preciso, de alguma forma, chamar essa função de destruição também?
fonte
.empty()
. Então você pode reutilizá-lo, se você preencher o conteúdo novamente fora do curso.destroy
necessário? A remoção do elemento também não destruirá a caixa de diálogo?Por que você deseja removê-lo?
Se for para impedir que várias instâncias sejam criadas, use a seguinte abordagem ...
E quando o erro ocorre, você faria ...
fonte
isso corrige de verdade
fonte
Isso é trabalhado para mim
Felicidades!
PS: Eu tive um problema semelhante e a abordagem acima resolveu.
fonte
$(this).dialog("close");
, a caixa de diálogo simplesmente não desaparecia. jQuery às vezes é muito estranho.Uma solução feia que funciona como um encanto para mim:
fonte
Você pode usar
fonte
Eu uso essa função em todos os meus projetos js
Você chama: hideAndResetModals ("# IdModalDialog")
Você define se:
fonte