2010-11-20 23 views
3

Ce que je suis en train de faire est de séparer les animations afin que je puisse tuer certains d'entre eux sans affecter les plus importants. J'essaye d'ajouter les animations de mouseenter/mouseleave à une file d'attente ainsi je peux les tuer quand une animation différente commence. Le code ci-dessous ne fait rien pour arrêter les animations en file d'attente. Il se comporte comme le défaut où les animations vont s'accumuler dans la file d'attente et se jouer. Ce qui donne?jQuery file d'attente personnalisée

$('.item').mouseenter(function(){ 
    $(this).clearQueue("test"); 
    $(this).queue("test",function(next){   
     $(this).animate({ 
      height: '250px' 
     },500); 
    }); 
    $(this).dequeue("test"); 
}).mouseleave(function(){ 
    $(this).clearQueue("test"); 
    $(this).queue("test",function(next){   
     $(this).animate({ 
      height: '140px' 
     }, 250); 
    }); 
    $(this).dequeue("test"); 
}) 
+0

Certains file d'attente générale utilise, en expliquant comment les files d'attente personnalisées fonctionnent, etc: [? Quelqu'un peut-il expliquer la file d'attente jQuery me] (http://stackoverflow.com/q/1058158/91914) – gnarf

+0

En fait, vu que, avant d'être publié. Tous les exemples ont des fonctions personnalisées et non des animations! Tant pis. Merci quand même. – methodin

Répondre

1

C'est parce que les fonctions que vous sont en cours d'exécution dans la complète file d'attente "test" immédiatement, donc le résultat est que vous êtes instantanément ajouter des choses sur la fx (animation par défaut) file d'attente, votre "test" reste de file d'attente vider tout le temps.

C'est seulement a un élément juste avant d'appeler .dequeue() ... alors la file d'attente fx a une nouvelle entrée, cette file d'attente continue de construire et que file d'attente vous n'êtes jamais compensation. Il va comme ceci:

  • $(this).clearQueue("test"); - cette file d'attente était déjà vide
  • $(this).queue("test", ...); - ajouter l'article à la file d'attente test
  • $(this).animate({... }); - font la queue animation sur la file d'attente fx
  • $(this).dequeue("test"); - lancer la file d'attente test , qui est immédiatement vidé puisque .animate() revient instantanément.
+0

Une idée de comment séparer les animations en utilisant la file d'attente fx? Je ne peux pas l'air de trouver un moyen d'obtenir la fonction d'animation d'utiliser une autre file d'attente ... – methodin

+0

@methodin - Il n'y a pas vraiment ' « fx »' est codé en dur comme la file d'attente par défaut, quel est le raisonnement derrière pas utilisant la file d'attente par défaut pour l'élément? –

+0

Je tapais une réponse et eu un eureka. Merci pour les réponses! – methodin