我使用jQuery 1.3.2,以及我试图选择在一个SVG DOM元素某些元素。

$('svg > defs > lineargradient')

但出于某种原因没有选择它,我知道我可以访问其他的项目在元素,因为我已经成功地检索到$(“SVG>矩形”)。

我的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将无法选择<的LinearGradient>元素?

有帮助吗?

解决方案

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

<强> 工作演示

修改

看来,>直接子表达不工作,但如果你没有这个指定一个选择器(如果可能),它是在Firefox罚款(但不会 IE)。以下确实在IE然而(在IE7测试)工作

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

显然,这将选择要在页面上稍硬的<lineargradient>元素,但像slice()eq()命令将允许您在包裹设定位置,以得到他们。

编写自己的过滤器用于选择器引擎可以产生你想要的结果。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top