2009-08-16 9 views
3

これはおそらくjQueryエキスパートにとっては簡単なことです。jQuery AJAX:「SAVED」メッセージを追加してもう一度消す方法

I有し<のdiv ID = " form23 " > <形態> <TEXTAREA> blahblah </TEXTAREA > <入力タイプ= "ボタン"値= "保存"のonClick = " saveCaption(23)" > < /フォーム> </div >

私はSAVEDメッセージを痛み、消えてしまう。しかし、私はフォームやその要素を消したくないのです。

私は次のようなAJAX呼び出しを持っています。

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; 

} 

私は応答を追加できます。しかし、すぐに1秒後にそれを消す方法があります。今のところ、それは繰り返され続けるだけで最後の追加に追加されます。私はそれが表示され、fadeOutを使用した直後に消えたい。

更新:私は、IVとRaYellの応答に基づいてこれを行いました。それは動作しますが、それはエレガントですか?

関数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

これは、IVとRaYellの応答に基づいて行いました。しかしそれはエレガントですか? function saveCaption(id){ \t var queryString = $( '#form' + id).formSerialize(); \t $アヤックス({ \t \tタイプ: "POST"、 \t \t URL: "?/ ajax.phpを含む要求= saveCaption"、 \t \tデータ:のqueryString、 \t \t成功:関数(応答){ \t \t \t $( '#フォーム' + id)append( '

'+response+'
'); \t \t \tのsetTimeout(関数(){ \t \t \t $( '#メッセージ')フェードアウト(関数(){ \t \t \t \t $(この).remove(); \t \t \t}); \t \t \t}、1000); \t \t} \t})。 \t falseを返します。 } –

+0

これが最もエレガントな方法であるかどうかは、私が間違いなく答えることができません。それはうまくいって、うれしい! :)乾杯。 – theIV

答えて

4

私は上記のRaYellの回答を組み合わせて使用​​したいと思いますが、fadeOutコールバックでremoveを使用するか、それ以外の場合は前のappendに続けて追加します。少なくとも、あなたの質問を表現する方法。このようなものが動作する可能性があります:

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

あなたのメッセージは(成功コールバック内で)これを追加追加した後:

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

は、実際に何かをセレクタを交換してくださいあなたのメッセージにマッチします。

+0

私は理解していません。私の反応は「保存」です。私が理解できるように、コード内にコードを書いてもいいですか? –

+0

@Scott @RaYellは、あなたがそれを行う必要があるかどうかについて、かなり良い方向性を与えてくれたので、ちょうどあなたが何をする必要があるのか​​を理解しようとするのに時間を費やすほうがよいと思います。あなたのためにコードを書いてくれるので、SOは適切な場所ではありません。 –

関連する問題