JQuery延迟不工作

问题描述:

我想让#load显示(同时隐藏#body)然后隐藏#load,并使#body可见与淡入淡出。那就是我最终想要的。我不认为ajaxstart和stop是可行的。这只是一个闪屏。JQuery延迟不工作

基本上隐藏页面加载中的#body,显示#load几秒钟,然后隐藏它,然后再次显示#body。为什么没有人可以弄清楚这一点!

jsfiddle.net/peTSQ

var body = $('#body'); 

$(body).hide(); 
$(this).show().delay(3000).hide(0, function() { 
    $(body).show(); 
}); 
+1

最好做这种事情的方法是在$ .ajax函数上使用“success”参数。然后你可以停止“加载”的东西,当ajax请求得到答案。我认为你错误地解释了ajaxStart和ajaxStop –

+0

#load上的AJAX调用究竟做了什么。也许它是在节目开火之前交换内容? – JohnFx

+1

'''''' - 一个班级的好名字:P' –

这?

var body = $('#body'); 

$(body).hide(); 
$(this).show().delay(3000).hide(0, function() { 
    $(body).show(); 
}); 
+0

+1但请解释为什么:) –

+0

@Felix当然.... –

+0

这不行? –

根据您想要延迟的时间,您可能会或可能不会接近。另外,你可以使用一个简单的setTimeout()函数来显示你想要的项目,并且只需要一定的时间。

以下将显示它为600毫秒,然后隐藏的项目:

$("#load").show().delay(600).hide(); 

每jQuery的文档,延迟的目的()函数:

设置一个计时器延迟执行队列中的后续项目。

其结果是,你可能只是想使用setTimeout的,因为你不分离的任何事件,而是将刚形成延迟:

setTimeout(function(){ $("#load").show(); }, 600); 
+0

如何将它合并到我的脚本,因为它是? –

更新时间:

$("#load").fadeOut("slow", function() { $("body").fadeIn('slow'); }); 
+0

我会如何将它并入我的脚本,因为它是? –

+0

我没有测试过这个,但它应该可以工作。你只是想在ajax调用期间创建一个覆盖层? –

+0

你可能会检查这个插件,我在我的几个项目中使用这个:http://jquery.malsup.com/block/ –