2010-02-12 3 views
1

J'ai une animation d'image BG qui repose sur le rappel hover pour revenir à son état d'origine. Si je déplace la souris rapidement sur les liens, l'état stationnaire colle. Je suppose que je supprime la souris avant la fin de la première animation, de sorte que le rappel ne s'enregistre pas.Comment puis-je m'assurer que mes événements se déclenchent toujours dans jQuery? [Le rappel du Hover ne se déclenche pas]

Y a-t-il un moyen plus sûr d'écrire cette fonction?

$('.nav li a').hover(function() { 
    $(this).addClass('hovered', 300); 
}, function() { 
    $(this).removeClass('hovered', 300); 
}); 

(il utilise un BGimg plugin pour soutenir le paramètre de vitesse sur Ajout/removeClass)

testable ici: McPherson Industries

Répondre

2

Ceci est un problème commun et ne peut être fixé, je crains – c'est le navigateur pour suivre les événements, et si elle peut tu n'as pas de chance.

Cela pourrait aussi être la faute de jQuery. Difficile à dire sans rester dans le code source. Quoi qu'il en soit, il y a une solution simple:

$('.nav li a').hover(function() { 
    // When element is hovered, remove hovered state from all elements.. 
    $('.hovered').removeClass('hovered'); 
    // ..and add it to this one. 
    $(this).addClass('hovered', 300); 
}, function() { 
    // This is only needed when exiting an element and not enterin another one 
    $(this).removeClass('hovered', 300); 
}); 

Cela pourrait ne pas être sûr à 100%, mais il est mieux que votre position actuelle.

+0

C'est un bon début pour moi, merci. J'ai également accéléré la transition temporelle au 1/10ème de seconde (100), donc c'est un peu moins susceptible de se produire. Ces deux changements le rendent beaucoup plus utilisable; Merci. –

-1

Quelle est la valeur 300 dans la méthode addClass? il ne prend pas deux paramètres .. juste un
référence Api: http://api.jquery.com/addClass/
(ok, remarqué le plugin)

Il fonctionne très bien pour moi .. tous les liens reviennent à leur image d'origine, no- importe comment je déplacer rapidement la souris ..

Mise à jour

Ok je vois le problème maintenant ..

  • Chrome est OK (le seul .. il semble)
  • Firefox montre le problème ..
  • IE montre le problème

Mise à jour 2 Il semble moi que le problème est avec le plugin que vous utilisez .. Il ignore les demandes en file d'attente sur le même objet jusqu'à ce que l'animation en cours est terminée .. Donc si vous planez avant que le premier a terminé, il ne reviendra pas à la normale.

Je ne peux pas aider plus à ce sujet, désolé ..

+0

Voir mon commentaire sur le plugin. J'ai ajouté un lien. Est-ce que les liens roulent de haut en bas pour vous? Et ils ne collent pas? Battre. J'ai essayé FF3 et Safari4, et il colle dans les deux si je vais assez vite –

+0

oui, désolé à ce sujet .. juste remarqué .. –

+0

Merci pour le test IE; Je suis sur OS X. –

Questions connexes