Question

J'utilise jQuery 1.3.2 et j'essaie de sélectionner des éléments dans un élément DOM svg.

$('svg > defs > lineargradient')

Cependant, pour une raison quelconque, il ne le sélectionne pas, je sais que je peux accéder à d'autres éléments du < svg > élément depuis que j'ai récupéré avec succès un $ (" svg > rect ")).

Mon DOM SVG ressemble à ceci:

<svg width="975" height="385">
    <defs>
       <lineargradient id="raphael-gradient-0" x1="1.000" y1="1.000" x2="0.000" y2="0.000">
          <stop offset="0%" stop-color="#242b62"/><stop offset="9.090909090909092%" stop-color="#174a88"/>
          <stop offset="18.181818181818183%" stop-color="#0e60a3"/><stop offset="27.272727272727273%" stop-color="#0b66ab"/>
          <stop offset="36.36363636363637%" stop-color="#0870b7"/>
       ...
       </lineargradient>
       <lineargradient id="raphael-gradient-1" x1="1.000" y1="1.000" x2="0.000" y2="0.000">...</lineargradient>

    </defs>
    <circle cx="50" cy="40" r="10" fill="#ff0000" stroke="#000" transform=""/>
    <rect x="0" y="0" width="975" height="385" fill="url(#raphael-gradient-1)" stroke="none" transform="" style="opacity: 1;" opacity="1" fill-opacity="1"/>
</svg>

Existe-t-il une raison pour que jQuery 1.3.2 ne puisse pas sélectionner le < lineargradient > éléments?

Était-ce utile?

La solution

alert($('svg lineargradient').length);

Démonstration de travail

EDIT:

Il semble que l'expression > immédiate de l'enfant ne fonctionne pas, mais si vous spécifiez un sélecteur sans ce sélecteur (si possible), cela fonctionne correctement dans Firefox (mais pas IE). Cependant, les éléments suivants fonctionnent dans IE (testé dans IE7)

alert($('lineargradient').length);

Évidemment, cela sélectionnera les éléments <lineargradient> que vous souhaitez sur une page un peu plus difficile, mais des commandes telles que slice() et eq() vous permettront de les obtenir par position dans le jeu enveloppé.

L'écriture de vos propres filtres pour le moteur de sélecteur Sizzle peut donner les résultats souhaités.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top