10 Stimmen

jQuery UI Dialog Auto-Close mit setTimeout

Ich versuche, mein Dialogfeld drei Sekunden nach dem Öffnen automatisch schließen zu lassen. Ich habe die folgenden Methoden ausprobiert:

setTimeout($("#mydialog").dialog('close'), 3000);

Hier ist es im Kontext:

$("#acknowledged-dialog").dialog({
    height: 140,
    modal: true
});

setTimeout($("#acknowledged-dialog").dialog('close'), 3000);

Aber mit dieser Methode sieht man es nicht einmal! Ich vermute, dass die Close-Methode sofort aufgerufen wird, nachdem sie auf der Seite angezeigt wird. Das Protokoll zeigt keine Fehler an.

Ich habe auch versucht, die Bindung an das Ereignis dialogopen:

$("#acknowledged-dialog").bind('dialogopen', function(event, ui) {
    setTimeout($(this).dialog('close'), 3000);
});
$("#acknowledged-dialog").dialog({
    height: 140,
    modal: true
});

Das Dialogfeld wird angezeigt, schließt sich aber nicht automatisch. Auch hier kein Fehler in den Protokollen.

Bin ich nicht in der Lage, 'this' im Argument für $ in setTimeout zu verwenden?

22voto

DefyGravity Punkte 5371

SetTimeout ruft den Rückgabewert von $("#mydialog").dialog("close") nach 3 Sekunden auf. Sie möchten das Ganze als String ausgeben, und es sollte gut funktionieren. Ich glaube auch nicht, dass Sie 'dialogopen' binden wollen, bevor Sie den Dialog initialisieren. Unten sollte es gut funktionieren:

$("#acknowledged-dialog").dialog({
    height: 140,
    modal: true,
    open: function(event, ui){
     setTimeout("$('#acknowledged-dialog').dialog('close')",3000);
    }
});

9voto

airportyh Punkte 20678

Ich habe einen Artikel speziell für das Problem, das bei Ihnen auftritt. Bitte lesen Sie das.

Kurz gesagt, Sie wollen Folgendes einpacken $("#mydialog").dialog('close') mit einer Inline-Funktion überall dort, wo sie als Folge einer Verzögerung oder eines ausgelösten Ereignisses ausgeführt werden soll.

setTimeout(function(){
    $("#mydialog").dialog('close')
}, 3000);

Das Dialogfeld wird nicht einmal angezeigt, da Sie es in jedem Fall sofort nach dem Öffnen geschlossen haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X