質問

jQuery 1.3.2を使用していますが、svg DOM要素内のいくつかの要素を選択しようとしています。

$('svg > defs > lineargradient')

ただし、何らかの理由で選択されないため、<!> lt; svg <!> gt;の他のアイテムにアクセスできることがわかります。 $(<!> quot; svg <!> gt; rect <!> quot;)を正常に取得したため、要素。

私のSVG DOMは次のようになります。

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

jQuery 1.3.2が<!> lt; lineargradient <!> gt;を選択できない理由はありますか?要素?

役に立ちましたか?

解決

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

作業デモ

編集:

>直接の子式は機能しないようですが、これなしでセレクターを指定した場合(可能であれば)、Firefoxでは問題ありません(ただし、 not IE)。ただし、以下はIEで動作します(IE7でテスト済み)

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

明らかに、これはページ上で必要な<lineargradient>要素を少し難しく選択しますが、slice()eq()などのコマンドを使用すると、ラップされたセットの位置によってそれらに到達できます。

シズルセレクターエンジン用に独自のフィルターを作成すると、必要な結果が得られる場合があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top