3

これは、jQuery の専門家にとっておそらく非常に簡単です。

私は <div id="form23"><form><textarea>blahblah</textarea><input type="button" value="save" onClick="saveCaption(23)"></form></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秒後にすぐにフェードアウトする方法はありますか. 今のところ、最後の追加に繰り返して追加し続けています。フェードアウトを使った直後に現れたり消えたりしたいです。

更新: theIV と 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;

}

4

2 に答える 2

4

上記のRaYellの回答を組み合わせて実行したいと思うが、fadeOutコールバックで削除を使用するか、そうでなければ前の追加に追加し続けます—少なくとも、あなたの言い回しに基づいてそれを行うと思いますあなたの質問。このようなものはうまくいくかもしれません:

setTimeout(function () {
  $('selector').fadeOut(function(){
    $(this).remove();
  });
}, 1000);
于 2009-08-16T06:09:08.920 に答える
4

メッセージを追加した後、これを追加します(成功コールバック内):

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

セレクターを実際にメッセージに一致するものに置き換えます。

于 2009-08-16T06:00:57.910 に答える