Wenn eine Ajax-Operation fehlschlägt, erstelle ich ein neues Div mit den Fehlern und zeige es dann als Dialog. Wenn der Dialog geschlossen ist, möchte ich das div komplett zerstören und wieder entfernen. Wie kann ich das machen? Mein Code sieht im Moment ungefähr so aus:
$('<div>We failed</div>')
.dialog(
{
title: 'Error',
close: function(event, ui)
{
$(this).destroy().remove();
}
});
Wenn ich dies ausführe, wird das Dialogfeld korrekt angezeigt, aber wenn ich es schließe, ist das Dialogfeld weiterhin im HTML-Code sichtbar (mithilfe von FireBug). Was vermisse ich hier? Etwas was ich vergessen habe?
Update: Ich habe gerade bemerkt, dass mein Code mir einen Fehler in der Firebug-Konsole gibt.
$ (this) .destroy ist keine Funktion
Kann mir jemand helfen?
Update: Wenn ich es $(this).remove()
stattdessen mache , wird das Element aus dem HTML entfernt. Aber ist es vollständig aus dem DOM entfernt? Oder muss ich diese Zerstörungsfunktion auch zuerst aufrufen?
quelle
.empty()
. Dann können Sie es wiederverwenden, wenn Sie den Inhalt natürlich wieder füllen.destroy
notwendig? Wird das Entfernen des Elements nicht auch den Dialog zerstören?Warum möchten Sie es entfernen?
Wenn Sie verhindern möchten, dass mehrere Instanzen erstellt werden, verwenden Sie einfach den folgenden Ansatz ...
Und wenn der Fehler auftritt, würden Sie tun ...
quelle
das behebt es wirklich
quelle
Das ist für mich gearbeitet
Prost!
PS: Ich hatte ein etwas ähnliches Problem und der obige Ansatz hat es gelöst.
quelle
$(this).dialog("close");
der Dialog ohne das einfach nicht verschwinden. jQuery ist manchmal sehr seltsam.Eine hässliche Lösung, die für mich wie ein Zauber wirkt:
quelle
Sie können verwenden
quelle
Ich benutze diese Funktion in allen meinen js-Projekten
Sie nennen es: hideAndResetModals ("# IdModalDialog")
Sie definieren, ob:
quelle