この手法が間違っているかどうかはわかりませんが、実際には、新しいコンテンツが完全に読み込まれたときにのみフェードインする必要があります。beforeSendとcompletesendはタイミングに影響を与えないようです。スライドアップが発生する前でも、新しいコンテンツはフェードインします。
私はあなたが知っておくべき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);
});
});