2012-04-26 45 views
1

所以我有一个空的div集显示:none叫id =“c1”。排队计时的jQuery事件无法正常工作

我想排队,以便它会褪色的,并说: 2秒

然后在1秒钟后它会说: 1秒

然后将淡出和页面重定向。

$('#c1').html('2 seconds').fadeIn('fast').delay(800).html('1 second').delay(800).fadeOut('fast'); 

但是,当我运行它时,我只看到“1秒”,并且它淡出。我根本看不到2秒钟的信息。就像jquery只听最后一个“html”事件一样。

我也尝试在div中输入“2秒”作为默认文本在html中。那也行不通。页面加载后仍然会显示“1秒”。

编辑解决方案

你可以做这样的事情:

$('#c1').html('2').fadeIn('fast').delay(800).queue(function() {$(this).html('1');$(this).dequeue();}).delay(800).fadeOut('fast'); 

回答

2

只能推迟()动画)没有其他功能,如HTML(,他们立即perfomered。

改为使用html()函数的超时值,或者将它们放在动画回调中。

$('#c1').html('2 seconds').fadeIn(1000, function() { 
    $(this).html('1 second').fadeOut(1000); 
});​ 
+0

是的,我发布后就明白了。或者我可以使用队列。 – Dexter 2012-04-26 20:32:50

+0

是的,自定义队列,就像使用jQuery的queue()和dequeue()也一样。 – adeneo 2012-04-26 20:34:09

+0

是的,我发布了一个很好的解决方案代码!但我仍然会给你最好的答案。 – Dexter 2012-04-26 20:34:34

1

尝试

$('#c1').html('2 seconds')fadeIn('fast'); 
    setTimeout($('#c1').html('1  second'), 800); 
    setTimeout($('#c1').fadeOut('fast'), 800); 
+0

是的setTimeouts也可以工作,或自定义队列或adeneo做到这一点。 – Dexter 2012-04-26 20:35:24

+0

实际上它不会像那样工作,在第一个fadeIn()之前缺少一段时间,并且在这些超时中需要函数调用。 – adeneo 2012-04-26 20:38:00

1

权,商务部指出:“它可以使用标准的动画队列或定制队列使用”,但像html的操作()不使用效果队列...

+0

是的,这部分不是很清楚的文档。 – Dexter 2012-04-26 20:35:05