我正在使用jQuery 1.3.2,我正在尝试在svg DOM元素中选择一些元素。
$('svg > defs > lineargradient')
但由于某些原因它没有选择它,我知道我可以访问< svg>中的其他项目。因为我已成功检索到$(“svg> rect”)。
我的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;元素?
答案 0 :(得分:1)
alert($('svg lineargradient').length);
<强> Working Demo 强>
修改强>
似乎>
直接子表达式不起作用,但是如果你指定一个没有它的选择器(如果可能的话),它在Firefox中就可以了(但不是 IE)。以下在IE中可以工作(在IE7中测试)
alert($('lineargradient').length);
显然,这会在页面上稍微选择你想要的<lineargradient>
元素,但slice()
和eq()
之类的命令会允许你按照包裹中的位置到达它们组。
为Sizzle选择器引擎编写自己的过滤器可能会产生您想要的结果。