2009-06-08 6 views
1

Ich versuche, eine Popup-Nachricht in meiner App zu erstellen. Bei Erfolg möchte ich einen Dialog öffnen, animieren ... und dann schließen. Ich denke, eine bessere Frage hätte sein sollen: "Wie erstellt man ein zeitgesteuertes Popup in Jquery? Aber trotzdem, wenn ich meinen Code starte, erscheint mein Dialog nur für einen Bruchteil einer Sekunde. Wenn ich den Dialog entferne ('close' Versuchen) Linie arbeitet es bis zu diesem Punkt. jquery Feuer dieser Befehle nacheinander oder parallel Does?Warum wird der jQuery UI-Dialog ('Schließen') zu früh ausgelöst?

$.ajax({ 
    type: "POST", 
    url: "/Sales", 
    data: { customer: [id] }, 
    success: function(msg) { 
     $('#thanks').dialog('open'); 
     $('#thanks').animate({ backgroundColor: '#aa0000', color: '#fff', width: 500 }, 2000); 
     $('#thanks').dialog('close'); 
    } 
}); 

Antwort

5

mit Linien die Art und Weise haben Sie es fast synchron in funktionieren würde.

$('#thanks').dialog('open').animate({ backgroundColor: '#aa0000', color: '#fff', width: 500 }, 2000).dialog('close'); 
0

vielleicht nicht Warten Sie, bis die Animation abgeschlossen ist. Versuchen Sie, eine Wartezeit von 2000 Minuten hinzuzufügen, oder verketten Sie das Schließen.

0

Der Anruf .dialog('close') wartet nicht auf Ihre Animation. Aber möchten Sie den Dialog wirklich sofort schließen oder sollten Sie nicht lieber auf Benutzereingaben warten (d. H. Auf einen Link/Button klicken), um ihn zu schließen?

1

Sie wollen wahrscheinlich den Dialog in dem Rückruf von der belebten Funktion schließen:

$.ajax({ 
    type: "POST", 
    url: "/Sales", 
    data: { customer: [id] }, 
    success: function(msg) { 
     $('#thanks').dialog('open'); 
     $('#thanks').animate({ backgroundColor: '#aa0000', color: '#fff', width: 500 }, 2000, "linear", function(){ $('#thanks').dialog('close'); }); 
    } 
}); 

Aber ich denke, Sie besser dran seien ein Plugin, wie jGrowl verwenden?

Verwandte Themen