我有这段代码:

    $('#contentSites').fadeOut(200, function() {
        // Animation complete
            $.get("my_account_content.php?q=" + content, function(data){
                $("div#contentSites").html(data);
                $('#contentSites').fadeIn(200);
});


我有2个按钮可以激活ajax请求并更改#contentSites的全部内容-现在它一步一步地执行3件事(仅执行下一个直到完成上一个)。它这样做:
1.淡出当前内容
2.获取新内容
3.淡入新内容。

由于这不是很有效(因为我需要等到淡出发生在ajax请求之前)。

我想问一下如何同时触发淡出和ajax请求,以及仅在ajax请求完成后才能进行淡入。

最佳答案

您只需在fadeOut上删除回调

$('#contentSites').fadeOut(200);
$.get("my_account_content.php?q=" + content, function(data){
    $("div#contentSites").html(data);
    $('#contentSites').fadeIn(200);
});


使用jQuery defferds的另一种方法是

$.when( $('#contentSites').fadeOut(200), get_content() ).then(function(){
    $('#contentSites').fadeIn(200);
});

function get_content(){
   return $.get("my_account_content.php?q=" + content, function(data){
             $("div#contentSites").html(data);
          });
}


这将确保仅在ajax请求和fadeOut完成后才运行fadeIn,同时同时运行它们。

09-25 19:17