Cuando falla una operación ajax, creo un nuevo div con los errores y luego lo muestro como un diálogo. Cuando se cierra el cuadro de diálogo, me gustaría destruir completamente y eliminar el div nuevamente. ¿Cómo puedo hacer esto? Mi código se ve así en este momento:
$('<div>We failed</div>')
.dialog(
{
title: 'Error',
close: function(event, ui)
{
$(this).destroy().remove();
}
});
Cuando ejecuto esto, el cuadro de diálogo aparece correctamente, pero cuando lo cierro, el cuadro de diálogo aún está visible en el html (usando FireBug). ¿Que me estoy perdiendo aqui? Algo que he olvidado?
Actualización: Acabo de notar que mi código me da un error en la consola de Firebug.
$ (this) .destroy no es una función
¿Alguien puede ayudarme?
Actualización: si lo hago solo $(this).remove()
, el elemento se elimina del html. ¿Pero está completamente eliminado del DOM? ¿O de alguna manera necesito llamar a esa función de destrucción primero también?
fuente
.empty()
. Luego puede reutilizarlo, si llena el contenido nuevamente fuera de curso.destroy
necesario? ¿Eliminar el elemento también destruirá el diálogo?¿Por qué quieres eliminarlo?
Si es para evitar que se creen varias instancias, simplemente use el siguiente enfoque ...
Y cuando se produce el error, lo harías ...
fuente
esto lo arregla de verdad
fuente
Esto me funcionó
¡Salud!
PD: tuve un problema algo similar y el enfoque anterior lo resolvió.
fuente
$(this).dialog("close");
, el diálogo simplemente no desaparecería. jQuery a veces es muy raro.Una solución fea que funciona como un encanto para mí:
fuente
Puedes hacer uso
fuente
Yo uso esta función en todos mis proyectos js
Lo llamas: hideAndResetModals ("# IdModalDialog")
Usted define si:
fuente