2009-09-18 40 views
0

我正在使用jQuery 1.3.2,並試圖選擇svg DOM元素中的某些元素。jQuery不會選擇lineargradient對象

$('svg > defs > lineargradient') 

但是由於某種原因,它不選擇它,我知道我可以訪問其他的項目在<SVG>因素,因爲我已經成功地檢索到$(「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 >元素?

回答

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

Working Demo

編輯:

看來,>直接子表達式是不行的,但是如果指定沒有這個選擇(如果可能),它是好的在Firefox中(但是而不是 IE)。在IE下不工作,但是(在IE7測試)

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

顯然,這將選擇要在頁面上稍硬的<lineargradient>元素,但像slice()eq()命令將允許您去他們在包裝組中的位置。

Sizzle選擇器引擎編寫自己的篩選器可能會產生所需的結果。

+0

嗯有趣,這似乎沒有在Internet Explorer中工作。 – leeand00 2009-09-18 15:54:33

+0

它表示IE8上「線性漸變爲0」的數量。 – leeand00 2009-09-18 15:56:09

+0

@ leeand00 - 這是上週的兩倍,我因爲沒有在IE上測試而被抓到(通常使用Firefox)。這與jQuery使用的Sizzle Selector引擎有關。 – 2009-09-18 15:58:56