2010-05-10 17 views
10

numaralı kuyruktaki attr() öğesini bu kodda neyin yanlış yapmıyor? Bu etkiyi elde etmeye çalışıyorum: fadeOut(500) ve attr('class','myClass') 600 milisec ile geciktirildi .. daha sonra delay(600) ve fadeIn(500). Gecikmeler doğru bir şekilde gerçekleşiyor ancak attr() gecikmiyor, #myDiv hala sönüyorsa yanıyor! :. '(delay() ve fadeOut(),

$('#myDiv').fadeOut(500) 
      .delay(600) 
      .attr('class','myClass') 
      .delay(600) 
      .fadeIn(500); 

cevap

25

.delay() sadece siz) özel olarak farklı bir kuyruğu belirtmedikçe animasyon veya fx kuyruğu (etkilemektedir zincirleme ve kuyruk 2 belirgin farklı kavramlardır unutmayın, zincirleme aynı jquery kullanımını sürdürmektedir ayarlayabilirsiniz, ancak o kümedeki öğe üzerinde herhangi bir olay kuyrukları daha tamamen farklı bir şey var

.attr() çağrı etkilenen sahip olmak için, böyle .queue() kullanarak aynı sıraya bir geri, olarak eklemek zorunda.

$('#myDiv').fadeOut(500) 
      .delay(600) 
      .queue(function(next) { $(this).attr('class','myClass'); next(); }) 
      .delay(600) 
      .fadeIn(500); 

Ayrıca ben $ (this) .dequeue() `işlevi içinde` arasak bu biraz daha temiz :)

+1

yapabilir mevcut .addClass(), .removeClass() ve .toggleClass() yöntem vardır unutmayın. Dokümanlardan: * .queue() ile bir işlev eklerken, satırdaki sonraki işlevin çalışması için .dequeue() öğesinin çağrıldığından emin olun. * Her neyse +1;) –

+0

@Felix - Woops I ' m genellikle bu kuyruktaki son öğe olarak çağırıyor, iyi yakalar :) –

+0

Merhaba Nick, Cevabınız için çok teşekkürler. Söyler gibi çalışır, ancak sıradaki aramalar artık çalışmıyor .. :( EDIT sadece şimdi Felix yorumu gördü .. İkinize de teşekkürler çok teşekkürler – Luca

İlgili konular