jQuery延迟无法正常工作

时间:2010-12-28 06:28:52

标签: jquery

$('.transparent').removeClass('transparent').delay(2000).addClass('not_transparent').delay(4000)

我有一个半透明的div,然后想把它切换到不透明。但是jQuery .delay();方法在这里似乎不起作用。我试过.fadeIn();相反,这有效延迟,但它不适用于改变类。

3 个答案:

答案 0 :(得分:129)

.delay()用于属于queue的项目,例如动画。一个简单的addClass没有排队。

您可以使用setTimeout

var trans = $('.transparent').removeClass('transparent');
setTimeout(function() {
    trans.addClass('not_transparent');
}, 2000);

作为替代方案,您可以使用.queue()将非排队的项目添加到队列中,但我认为setTimeout会更好。

$('.transparent').removeClass('transparent').delay(2000).queue(function(nxt) {
      $(this).addClass('not_transparent');
      nxt();
});

答案 1 :(得分:5)

我知道这是一个老问题,但谷歌仍然有很多流量,所以我会加上我的两分钱;

您可以使用类似 -

的内容

$('.transparent').fadeIn().delay(500).queue(function(){
  $('.transparent').addClass('yourclass');
});

您可以将一个函数传递给队列,以便在延迟后执行它们。我自己一直在使用这个非常相似的例子。

答案 2 :(得分:0)

.delay()无法使用函数外的.addClass()标记,因此只需使用:

delay();
function delay(){
     $('.pgtitle').delay(5000).fadeIn(0).addClass('animated bounceInDown');
}