jQueryはlineargradientオブジェクトを選択しません
-
22-07-2019 - |
質問
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()
などのコマンドを使用すると、ラップされたセットの位置によってそれらに到達できます。
シズルセレクターエンジン用に独自のフィルターを作成すると、必要な結果が得られる場合があります。
所属していません StackOverflow