Ajax:只有在满载时才淡入新内容

我不知道这种技术是否错误,但我真的只希望新内容在满载时淡出。 看起来像beforeSend和完整发送对时间没有影响。 fe。即使在上滑之前,新内容也会逐渐消失。

我还不熟悉你必须知道的ajax。

这是我的代码:

$(function(){ var replacePage = function(url) { $.ajax({ url: url, type: 'get', dataType: 'html', beforeSend: function() { $(".menue").slideUp(); }, success: function(data){ var dom = $(data); var html = dom.filter('#content').html(); $('#content').html(html); }, complete: function(){ $("#content").fadeIn(); } }); } $('nav a').live('click', function(e){ history.pushState(null, null, this.href); replacePage(this.href); e.preventDefault(); $("#content").hide(); }); $(window).bind('popstate', function(){ replacePage(location.pathname); }); }); 

请尝试以下方法:

 success: function(data){ var dom = $(data); var html = dom.filter('#content').html(); $(".menue").promise().done(function(){ $('#content').html(html).fadeIn() }) }, 

或者您可以使用slideUp()的回调函数,该函数在动画完成后执行:

 $(".menue").slideUp('slow', function(){ $.ajax({ url: url, type: 'get', dataType: 'html', success: function(data){ var dom = $(data); var html = dom.filter('#content').html(); $('#content').html(html).fadeIn() } }); }) 

请注意,不推荐使用live() ,而是可以使用on()方法。

将ajax调用中的success成功函数更改为:

 success: function(data){ var dom = $(data); var html = dom.filter('#content').html(); $('#content').html(html).hide().fadeIn(); }, 

请记住从完整调用中删除fadeIn()。