Jquery Ajax:只有在新内容完全加载时才淡入
我不知道这种技术是否错误,但我真的只希望新内容在满负荷时淡入。似乎beforeSend和complete send在时间上没有效果。甚至在幻灯片出现之前,新内容就会淡入淡出,f.e 我还不太熟悉ajax,你一定知道 这是我的密码:Jquery Ajax:只有在新内容完全加载时才淡入,jquery,ajax,Jquery,Ajax,我不知道这种技术是否错误,但我真的只希望新内容在满负荷时淡入。似乎beforeSend和complete send在时间上没有效果。甚至在幻灯片出现之前,新内容就会淡入淡出,f.e 我还不太熟悉ajax,你一定知道 这是我的密码: $(function(){ var replacePage = function(url) { $.ajax({ url: url, type: 'get', dataT
$(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);
});
});
将ajax调用中的success函数更改为:
success: function(data){
var dom = $(data);
var html = dom.filter('#content').html();
$('#content').html(html).hide().fadeIn();
},
请记住从完整调用中删除fadeIn()。尝试以下操作:
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()
方法。将您的$(“#内容”).hide()
放在beforeSend方法中。感谢您的快速回复。但还是一样。在菜单滑动之前,新内容已经淡入。此外,您应该使用.on()
,而不是bind()
和live()。哇,我不知道那件事!非常酷,到目前为止似乎效果不错。但我总是会遇到fadeIn并不总是完美地执行,它会闪烁,好像还有一点要加载。加载内容中的第三方工具(如soundcloud player)会影响fadeIn吗?我如何才能真正确定在beforeSend未完成之前不会发生任何事情?菜单应该先向上滑动,然后内容可以加载到它必须加载的内容,但它应该只在菜单向上滑动时出现。我以前以为Presend会这么做,但实际上不是这样。我用错了吗?在send是ajax事件,hide()和slideUp()是动画方法之前,您可以使用slideUp的回调函数,比如$(“.menue”).slideUp(function(){$.ajax()})
它首先滑动菜单,然后开始发送ajax请求感谢添加的信息。但我必须回到这里。新内容有时仍在闪现。我在没有任何第三方内容的情况下尝试了它(比如soundcloud、vimeo),然后它就正常工作了。我的问题是:有没有一种简单的方法可以说所有第三方工具都应该在“完全加载”的预加载范围内,或者说处理这个问题要复杂得多?你能给我一个指示吗?@mellos,正如你所说,这可能很复杂,取决于第三方脚本的工作方式。你发布了另一个问题,我在那里发布了另一个答案,你试过了吗?是的,完善你的另一个答案!非常感谢。所以没有什么可以确保第三方内容也完全加载到ajax调用中?喜欢简单的方法吗?或者我应该看什么方向?