jQuery ritardo non funziona

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

Ho un div che è semi trasparente e quindi voglio passare a non trasparente. Ma il jQuery .delay (); il metodo non sembra funzionare qui. Ho provato .fadeIn (); invece e che funziona con un ritardo ma non funziona le classi che cambiano.

.delay() è usato per gli elementi che fanno parte di una queue , come le animazioni. Un addClass semplice non è in coda.

Potresti usare setTimeout .

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

In alternativa, puoi aggiungere l’elemento non in coda alla coda usando .queue() , anche se penso che un setTimeout sarebbe meglio.

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

So che questa è una vecchia domanda, ma c’è ancora molto traffico proveniente da Google, quindi aggiungerò i miei due centesimi;

Potresti usare qualcosa come –

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

.delay() non funziona con il tag .addClass() al di fuori di una funzione, quindi usa semplicemente:

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