2011-01-18 5 views
0

Je cet exemple ici: http://jsfiddle.net/QRChv/Menu hover parent-enfant - animation stop - jquery

Im essayant de le configurer de sorte que lorsque vous passez la souris sur un élément de la liste des enfants, son animation démarre, mais le doesnt parent invoque sa fonction .hover().

Je ne sais pas si cela peut être fait, mais y a-t-il un moyen d'empêcher le parent de passer à travers son animation. Donc, il ne fera rien quand son élément de liste d'enfants sera survolé.

J'ai un tas d'instructions if configurées pour chaque élément de la liste, j'ai essayé de le garder simple.

+0

$ (this) .parent() unbind ('mouseenter mouseleave'); J'ai essayé d'ajouter cela, mais pas de chance. http://jsfiddle.net/QRChv/5/ –

+0

merci @jAndy et @rcravens. le dernier numéro que j'ai commenté était réparable via css. http://jsfiddle.net/QRChv/17/ Je vois un problème si quelqu'un devait avoir une navigation similaire mais si les éléments étaient juste l'un à côté de l'autre. –

Répondre

1

J'ai mis à jour votre code:

http://jsfiddle.net/QRChv/4/

Vous devez arrêter la propagation des événements, à savoir en retournant false du gestionnaire.

Vous pouvez également appeler .stopPropagation() vous sur le event object

+0

merci, j'ai remarqué que si je passe la souris sur le premier élément de la liste, puis sur le deuxième élément de la liste, le premier ne sera pas animer à sa couleur d'origine. Je dois lire sur la propagation d'événements, parce que je ne suis pas sûr de ce que c'est –

+1

@NilsR: Oui faire cela. En termes simples, tous les événements "éclatent" dans l'arborescence DOM. Ainsi, un événement «mouseover» se produisant dans un élément imbriqué se répercutera sur tous les nœuds parents, sauf si vous l'annulez explicitement. C'est wat '.stopPropagation' fait. – jAndy

1

Qu'en est-il ajouter un appel à stopPropagation. Quelque chose comme ceci:.

http://jsfiddle.net/rcravens/QRChv/9/

+0

merci qui a fonctionné pour la plupart. :] Mais si je plane sur le premier élément puis directement sur le second, le premier n'anime pas en retour. –