3

对于 jQuery 专家来说,这可能非常简单。

我有 <div id="form23"><form><textarea>blahblah</textarea><input type="button" value="save" onClick="saveCaption(23)"></form></div>

我想要一条已保存的消息出现和消失。但我不想让表单或其元素消失。

我有一个 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;

}

我想知道..我可以附加响应。但是有没有办法在一秒钟后立即淡出它。现在,它只是不断重复并添加到最后一个追加。我希望它在使用淡出后立即出现和消失。

更新:我是根据 theIV 和 RaYell 的回复做的。它有效..但它优雅吗?

函数保存标题(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

附加消息后,添加以下内容(在成功回调中):

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

将选择器替换为实际匹配您的消息的内容。

于 2009-08-16T06:00:57.910 回答
4

我认为你会想要结合上面 RaYell 的回答,但在 fadeOut 回调中使用 remove ,否则它将继续附加到前一个附加 - 至少,我认为它会根据你的措辞方式做到这一点你的问题。像这样的东西可以工作:

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