jQuery delay not working

后端 未结 3 711
孤城傲影
孤城傲影 2020-11-28 08:30
$(\'.transparent\').removeClass(\'transparent\').delay(2000).addClass(\'not_transparent\').delay(4000)

I have a div that is semi transparent and th

相关标签:
3条回答
  • 2020-11-28 08:56

    I know this is an old question, but there's still a lot of traffic coming here from google so I'll add my two cents;

    You could use something like -

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

    You can pass a function to the queue in order to execute them after the delay. Have been using this myself for very similar examples.

    0 讨论(0)
  • 2020-11-28 08:58

    .delay() does not work with the .addClass() tag outside of a function so just use:

    delay();
    function delay(){
         $('.pgtitle').delay(5000).fadeIn(0).addClass('animated bounceInDown');
    }
    
    0 讨论(0)
  • 2020-11-28 09:04

    .delay() is used for items that are part of a queue, like animations. A simple addClass is not queued.

    You could use setTimeout.

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

    As an alternative, you could add the non-queued item to the queue using .queue(), though I think a setTimeout would be better.

    $('.transparent').removeClass('transparent').delay(2000).queue(function(nxt) {
          $(this).addClass('not_transparent');
          nxt();
    });
    
    0 讨论(0)
提交回复
热议问题