Domanda

Sto usando jQuery 1.3.2 e sto provando a selezionare alcuni elementi in un elemento svg DOM.

$('svg > defs > lineargradient')

Comunque per qualche motivo non lo seleziona, so che posso accedere ad altri elementi in < svg > elemento da quando ho recuperato con successo un $ (" svg > rect ").

Il mio DOM SVG è simile al seguente:

<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>

C'è qualche motivo per cui jQuery 1.3.2 non sia in grado di selezionare < lineargradient > elementi?

È stato utile?

Soluzione

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

Demo di lavoro

Modifica

Sembra che > l'espressione figlio immediata non funzioni, ma se si specifica un selettore senza questo (se possibile), va bene in Firefox (ma non IE). Di seguito funziona in IE (testato in IE7)

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

ovviamente, questo selezionerà gli <lineargradient> elementi che vuoi su una pagina leggermente più difficile, ma comandi come slice() e eq() ti permetteranno di raggiungerli in base alla posizione nel set avvolto.

Scrivere i propri filtri per il motore di selezione Sizzle può produrre i risultati desiderati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top