我不知道这种技术是否错误,但我真的只希望新内容在满载时消失。看来beforeSend和完成发送对时间没有影响。即使在向上滑动之前,新内容也会淡出,例如
我还不太熟悉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()
方法。关于jquery - Ajax:仅在完全加载时淡入新内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11597535/