Pregunta

Estoy usando jQuery 1.3.2, y estoy tratando de seleccionar algunos de los elementos en un svg elemento DOM.

$('svg > defs > lineargradient')

Sin embargo, por alguna razón, no se selecciona, sé que se puede acceder a otros elementos de la <svg> elemento ya he conseguido recuperar un $("svg > rect").

Mi SVG DOM se parece a esto:

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

¿Hay alguna razón por qué jQuery 1.3.2 no ser capaz de seleccionar el <lineargradient> elementos?

¿Fue útil?

Solución

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

Demo

EDITAR:

Parece que el > inmediata hijo de expresión no funciona, pero si se especifica un selector sin esto (si es posible), es bien en Firefox (pero no IE).La siguiente no funciona en IE sin embargo (probado en IE7)

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

obviamente, esta será la selección de la <lineargradient> los elementos que desea en una página un poco más difícil, pero los comandos como slice() y eq() le permitirá llegar a ellos por la posición en el conjunto ajustado.

Escribir tus propios filtros para la Sizzle selector de motor puede producir los resultados que usted desea.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top