2010-08-11 8 views
0

J'ai créé un #logo DIV qui se compose d'un plus petit #circle DIV & h1. Le #circle agit comme le DIV/canvas que mon objet Raphael.js, un cercle, est rendu. Mon but était de le faire quand un utilisateur survole le #logo DIV le cercle Raphael.js et h1 va s'animer mais je cours dans quelques problèmes.Comment se fait-il que mon objet circle Raphael.js n'obtienne pas l'animation de ses changements 'attr' et n'obtienne pas l'objet événement jQuery HandlerOut?

  • Pour une raison quelconque mon objet cercle Raphael.js ne reçoit pas c'est la méthode .attr() animée lors d'un événement de la souris jQuery .hover()handlerIn. Le changement arrive juste immédiatement.

  • De plus, au cours de l'événement handlerOut, le cercle Raphael.js ne reçoit pas sa méthode .attr(). Il garde juste les attributs .attr() qui ont été appliqués pendant l'événement handerIn

Le code à my example of this issue is located here. Vous pouvez cliquer sur preview (en haut à droite) sur cette page pour voir le code en action.

Répondre

4
$(c.node).animate({fill: "#666"}, 2000); 

Ceci est une animation jQuery. Evidemment jQuery n'a aucune idée des objets de Raphaël. Utilisez l'animation Raphaël à la place:

c.animate({fill: "#666"}, 2000); 

Conseils généraux ne touchez pas la propriété de nœud, sauf si vous savez vraiment vraiment ce que vous faites.

+0

Merci. Maintenant, le cercle obtient ses attributs modifiés lors des événements handlerIn & handlerOut mais maintenant le curseur sur le cercle SVG disparaît. Y a-t-il une méthode de Raphael que je peux placer suivant la méthode d'animation pour que le curseur de flèche change en curseur de pointeur/main? Ou devrais-je simplement mettre $ (c.node) .css ('cursor', 'pointer'); sur la ligne après c.animate ({fill: "# 666"}, 2000); ? –

+4

c.attr ({cursor: "pointer"}); Ne touchez pas le noeud. –

+0

merci beaucoup. ça a marché. –