【问题标题】:jQuery: Delayed fade unless clicked?jQuery:延迟淡入淡出,除非点击?
【发布时间】:2011-03-11 15:10:26
【问题描述】:
所以我目前有这个:
$('#message_notice').click(function(){
$(this).fadeOut('slow');
});
$('#message_notice').delay(8000).fadeOut('slow');
我最终想要做的是,如果点击了一条消息,然后继续并淡出它。否则,在 X 秒后自动淡出。
我可以做一个或另一个,但如果我有两个(如我的例子),那么点击不起作用(只是延迟淡入淡出)。
我正在使用 jQuery 1.4.4。
【问题讨论】:
标签:
javascript
jquery
effects
fade
【解决方案1】:
您需要在点击处理程序中调用.stop(true) 来取消您放入队列中的delay()。
新代码应该是这样的
$('#message_notice').click(function(){
$(this).stop(true).fadeOut('slow');
});
$('#message_notice').delay(8000).fadeOut('slow');
【解决方案2】:
那是因为当你跑步时
$('#message_notice').delay(8000).fadeOut('slow');
您正在创建一个动画队列,您的
$('#message_notice').fadeOut('slow');
如果有人点击,就会被附加。
有关解决方案,请参阅 SLaks 的答案,他们发布的速度比我写完的速度还要快...