2013-02-15 63 views
2

當我設置ID爲SVG元素設置自定義attrribute(拉斐爾)

var circle = paper.circle(x, y, r); 
circle.node.id = 'circle-id'; 

一切都很好,我可以看到這樣的預期的結果時,瀏覽文件與調試器:

<circle cx="320" cy="240" r="4" fill="none" stroke="#000" id="circle-id" /> 

然後,我可以通過document.getElementById方法或通過jQuery獲取此元素。 但添加其他一些屬性失敗。如果我嘗試添加屬性custom

circle.node.custom = 'custom-attr'; 

我看不出有什麼影響。

什麼樣的屬性可以添加到使用Raphael的SVG元素以及如何添加任意屬性?

+0

你爲什麼要設置一個custom-attr? – j0hnstew 2013-02-15 14:10:11

+0

@stewbydoo,我想要一些html元素與一些svg元素進行通信。例如,在某些div mouseover上更改某個svg元素的背景並在mouseout上將其更改回來。但用'$('elem-elector')。attr('fill','')'換回失敗。通過在svg元素上存儲'original-color'屬性,該功能可以輕鬆實現。 – ivkremer 2013-02-15 14:27:26

+0

聽起來對我來說,使用:hover僞類比使用自己的實現更好。 http://www.quirksmode.org/css/hover.html – 2013-02-15 16:44:50

回答

4

node是一個DOM元素,id是快速讀取/寫入其值的元素的標準屬性。使用setAttribute方法來設置非標準屬性。

circle.node.setAttribute('custom', 'custom-attr'); 
+1

不斷用jQuery進行編碼並沒有讓我去思考DOM是如何組織的。謝謝! – ivkremer 2013-02-15 14:10:02

+1

課程:詳細瞭解實際的Javascript。 jQuery不是聖盃。 – 2013-02-15 14:18:10

+1

它的工作,謝謝。 – 2017-03-31 12:06:05