J'essaie d'accéder à certaines données personnalisées émises dans un document SVG par Visio 2007. J'ai utilisé jquery.svg.js de Keith Wood. Malheureusement, même avec l'extension svgdom, je n'arrive pas à obtenir la forme que je veux pour l'animer.Métadonnées JQuery, SVG et Visio
Voici ce que le SVG ressemble:
...
<g id="group4-6" transform="translate(30.7955,-30.7955)" v:mID="4" v:groupContext="group" v:layerMember="0;1">
<v:custProps>
<v:cp id="helloWorld" v:nameU="AgentName" v:lbl="AgentName" v:type="0" v:langID="3081" v:val="VT4(Bob)"/>
</v:custProps>
<v:userDefs>
<v:ud v:nameU="Show" v:val="VT0(1):5"/>
</v:userDefs>
<title>Sheet.4</title>
<g id="shape5-7" ...
J'essaie d'accéder au groupe « shape5-7 », en naviguant jusqu'à ce par rapport à la propriété personnalisée contenant « Bob ». c'est-à-dire que je veux animer la forme avec Bob attaché à celle-ci. J'ai essayé ce qui suit, mais je n'ai rien récupéré.
$("v:cp[v:val*=Bob]:parent:parent > g:first", desk)
.each(function(i, item) { Log('found something'); })
.animate({ svgFill: 'red' }, 2000)
.animate({ svgFill: 'white' }, 2000);
Je l'ai essayé avec et sans les préfixes d'espace de noms XML. Et je sais que la forme peut être trouvée dans le DOM SVG, puisque $("#shape5-7")
trouve la bonne forme et s'anime bien. Il semble que dès que j'essaie d'accéder à des éléments non-SVG dans le DOM SVG, j'obtiens des échecs. Est-ce que je demande trop de la bibliothèque de jquery.svg.js ici, ou est-ce que je manque juste quelque chose? J'utilise la version modifiée de jquery avec la version 1.4.2 de jquery.svg.js fonctionnant dans Google Chrome 2.0.172.43. Je suis en phase de preuve de concept pour le moment, donc si vous pouvez me montrer comment faire la même tâche en utilisant les librairies Raphael ou ProcessingJS (ou tout autre), je serais prêt à changer. Les solutions JQuery-centric sont ma préférence cependant.
Merci
Matthews Andrew
Heureux d'apprendre que vous avez trouvé une solution. Pour le savoir, le pseudo-sélecteur ': parent' correspond aux éléments parents. Il ne navigue pas vers le parent de l'élément sélectionné ala '.parent()'. Voir les documents pour [: parent] (http://docs.jquery.com/Selectors/parent) vs [parent()] (http://docs.jquery.com/Traversing/parent). – dcharles
O.I.C. J'ai joué avec des choses comme: parent: premier à donner le premier parent. Clairement un exercice inutile! Je suppose que cela expliquerait aussi pourquoi l'utilisation de g: parent: parent> g: tout d'abord animé tout! –