我试图让一个元素淡入,然后在5000毫秒再次淡出.我知道我可以这样做:
setTimeout(function () { $(".notice").fadeOut(); }, 5000);
Run Code Online (Sandbox Code Playgroud)
但这只会控制淡出,我会在回调中添加上述内容吗?
Ken*_*ric 196
更新:从jQuery 1.4开始,您可以使用该.delay( n )方法.http://api.jquery.com/delay/
$('.notice').fadeIn().delay(2000).fadeOut('slow');
Run Code Online (Sandbox Code Playgroud)
注:$.show()与$.hide()缺省情况下不会排队,所以如果你想使用$.delay()它们,你需要配置他们的方式:
$('.notice')
.show({duration: 0, queue: true})
.delay(2000)
.hide({duration: 0, queue: true});
Run Code Online (Sandbox Code Playgroud)
您可以使用Queue语法,这可能有效:
jQuery(function($){
var e = $('.notice');
e.fadeIn();
e.queue(function(){
setTimeout(function(){
e.dequeue();
}, 2000 );
});
e.fadeOut('fast');
});
Run Code Online (Sandbox Code Playgroud)
或者你可以非常巧妙,并使用jQuery函数来完成它.
(function($){
jQuery.fn.idle = function(time)
{
var o = $(this);
o.queue(function()
{
setTimeout(function()
{
o.dequeue();
}, time);
});
};
})(jQuery);
Run Code Online (Sandbox Code Playgroud)
(理论上,在这里处理内存)允许你做到这一点:
$('.notice').fadeIn().idle(2000).fadeOut('slow');
Run Code Online (Sandbox Code Playgroud)
Cou*_*lin 23
我刚刚在下面弄清楚了:
$(".notice")
.fadeIn( function()
{
setTimeout( function()
{
$(".notice").fadeOut("fast");
}, 2000);
});
Run Code Online (Sandbox Code Playgroud)
我会为其他用户保留帖子!
Ara*_*ani 14
@strager很棒的黑客.像这样将它实现为jQuery:
jQuery.fn.wait = function (MiliSeconds) {
$(this).animate({ opacity: '+=0' }, MiliSeconds);
return this;
}
Run Code Online (Sandbox Code Playgroud)
然后将其用作:
$('.notice').fadeIn().wait(2000).fadeOut('slow');
Run Code Online (Sandbox Code Playgroud)
str*_*ger 11
你可以这样做:
$('.notice')
.fadeIn()
.animate({opacity: '+=0'}, 2000) // Does nothing for 2000ms
.fadeOut('fast');
Run Code Online (Sandbox Code Playgroud)
可悲的是,你不能只做.animate({},2000) - 我认为这是一个错误,并会报告它.
为了能够像这样使用它,你需要返回this.如果没有返回,fadeOut('slow')将无法获得执行该操作的对象.
即:
$.fn.idle = function(time)
{
var o = $(this);
o.queue(function()
{
setTimeout(function()
{
o.dequeue();
}, time);
});
return this; //****
}
Run Code Online (Sandbox Code Playgroud)
然后这样做:
$('.notice').fadeIn().idle(2000).fadeOut('slow');
Run Code Online (Sandbox Code Playgroud)