jQuery:除非点击否则延迟淡出?

时间:2011-03-11 15:10:26

标签: javascript jquery effects fade

所以我现在有这个:

$('#message_notice').click(function(){
   $(this).fadeOut('slow'); 
});

$('#message_notice').delay(8000).fadeOut('slow');

我最终要做的就是点击一条消息,然后继续淡出。否则,在X秒内,自动淡出。

我可以做其中一个,但是如果我有两个(如我的例子中所示)那么点击不起作用(只是延迟的淡入淡出)。

我正在使用jQuery 1.4.4。

2 个答案:

答案 0 :(得分:5)

您需要在点击处理程序中调用.stop(true)以取消您放入队列的delay()

新代码应该看起来像

$('#message_notice').click(function(){
    $(this).stop(true).fadeOut('slow'); 
});

$('#message_notice').delay(8000).fadeOut('slow');

答案 1 :(得分:2)

那是因为你跑步时

$('#message_notice').delay(8000).fadeOut('slow');

您正在创建一个

的动画队列
$('#message_notice').fadeOut('slow');
如果有人点击,

会被追加。

对于一个解决方案,请参阅SLaks的回答,他们发布的速度比我写完的速度快......