2009-08-16 7 views
3

das ist wahrscheinlich wirklich einfach für einen jQuery Experten.jQuery AJAX: Wie eine "SAVED" Nachricht anhängen und es nach einer Sekunde verschwinden lassen

Ich habe < div id = " form23 " > <Form> < TextArea- > blahblah </TextArea- > < input type = " Taste " Wert = " speichern " onClick = " saveCaption (23) " > </form > </div >

Ich möchte eine gespeicherte Nachricht ein ppear und verschwinden. Aber ich möchte nicht, dass die Form oder ihre Elemente verschwinden.

Ich habe einen AJAX-Anruf, der wie folgt ist.

function saveCaption(id) { 

var queryString = $('#form'+id).formSerialize(); 

    $.ajax({ 

    type: "POST", 

    url: "includes/ajax.php?request=saveCaption", 

    data: queryString, 

    success: function(response) { 

     $('#form'+id).append(response) 

    } 

    }); 

    return false; 

} 

Ich fragte mich .. Ich kann die Antwort anhängen. Aber gibt es einen Weg, es gleich nach einer Sekunde auszublenden? Gerade jetzt, es wiederholt sich immer und fügt dem letzten Append hinzu. Ich möchte, dass es direkt nach der Verwendung von fadeOut erscheint und verschwindet.

UPDATE: Ich tat dies basierend auf der Antwort von IV und RaYell. Es funktioniert .. aber ist es elegant?

Funktion saveCaption (id) {

var queryString = $('#form'+id).formSerialize(); 

    $.ajax({ 

    type: "POST", 

    url: "includes/ajax.php?request=saveCaption", 

    data: queryString, 

    success: function(response) { 

     $('#form'+id).append('<div id="message">'+response+'</div>'); 

     setTimeout(function() { 

      $('#message').fadeOut(function(){ 

      $(this).remove(); 

      }); 

     }, 1000); 

    } 

    }); 

    return false; 

}

+0

Ich tat dies basierend auf theIV und RaYell Antwort. Aber ist es elegant? Funktion saveCaption (ID) { \t var queryString = $ ('# form' + id) .formSerialize(); \t $ Schnipsel ({ \t \t Typ: "POST", \t \t url: "includes/ajax.php request = saveCaption?", \t \t Daten: querystring, \t \t Erfolg: function (Antwort) { \t \t \t $ ('# form' + id).anhängen ('

'+response+'
'); \t \t \t setTimeout (function() { \t \t \t $ ('# message') fadeOut (function() { \t \t \t \t $ (this) .remove();. \t \t \t}); \t \t \t}, 1000); \t \t} \t}); \t Rückgabe false; } –

+0

Ich kann definitiv nicht beantworten, ob dies der eleganteste Weg ist oder nicht, da es wahrscheinlich einen anderen Weg gibt, dies zu tun. Froh, dass es funktioniert! :) Prost. – theIV

Antwort

4

Ich denke, Sie wollen eine Kombination von RaYell's Antwort oben tun, aber eine Entfernung in der FadeOut Callback verwenden, oder sonst wird es weiterhin an die vorherige Append-zumindest, ich denke, dass es basierend darauf tun wird wie du deine Frage formuliert hast. So etwas wie dies funktionieren könnte:

setTimeout(function() { 
    $('selector').fadeOut(function(){ 
    $(this).remove(); 
    }); 
}, 1000); 
3

Nachdem Sie Ihre Nachricht diese anhängen hinzufügen (innen Erfolg Rückruf):

setTimeout(function() { 
    $('selector').fadeOut(); 
}, 1000); 

Wähler mit etwas ersetzen, das tatsächlich Passen Sie Ihre Nachricht an.

+0

Nicht ganz sicher, verstehe ich .. meine Antwort ist "Saved". Hmmm .. würde es mir etwas ausmachen, Code in meinem Code zu schreiben, damit ich es verstehen kann? –

+0

@Scott, ich denke, du solltest lieber etwas Zeit damit verbringen, zu verstehen, was genau du tun musst, da @RaYell dir eine ziemlich gute Richtung gab, wie du es machen musst. SO ist nicht der richtige Ort dort Leute schreiben Code für Sie. –