2013-05-16 43 views
1

我正在創建包含像矩形,路徑,圓形,線等許多元素的svg圖表。 通過傳遞json選項以及元素將要追加的元素來創建元素請參考以下代碼。通過jquery替換特定元素的值

this.svgLink = "http://www.w3.org/2000/svg"; 


drawPath: function (options, element) { 
     var path = document.createElementNS(this.svgLink, "path"); 
     $(path).attr(options).appendTo(element); 

    }, 

    drawLine: function (options, element) { 
     var path = document.createElementNS(this.svgLink, "line"); 
     $(path).attr(options); 
     $(path).appendTo(element); 

    }, 

    drawCircle: function (options, element) { 
     var circle = document.createElementNS(this.svgLink, "circle"); 
     $(circle).attr(options).appendTo(element); 
    }, 
    drawEllipse: function (options, element) { 
     var ellipse = document.createElementNS(this.svgLink, "ellipse"); 
     $(ellipse).attr(options).appendTo(element); 
    }, 

上午通過像下面的代碼的選項。

var rectOptions = { 
      'id': this.svgObject.id +'_ZoomArea', 'x': x, 'y': y, 'width': width, 'height': height, 
      'fill': 'rgba(69,114,167,0.25)', 'stroke-width': 1, 'stroke':'rgba(69,114,167,0.25)','clip-path': 'url(#' + this.svgObject.id +'_ChartAreaClipRect)' 
     }; 

現在我想通過爲其已創建的再創造,而不是特定的元素一些其他的選擇只是想更換新值的屬性值,就像$ .extend jQuery中。

我如何用新值替換屬性值?

感謝,

溼婆

+0

爲什麼你不能使用'$(E).attr(rectOptions)'? –

+0

是否會取代現有的屬性值? – SivaRajini

+0

當然會的。你爲什麼認爲它不會? –

回答

1

您可以使用$(e).attr(rectOptions)覆蓋用新的現有屬性。

有一點讓我很擔心,但是:你真的不應該改變id選項。這可能會混淆已保存舊ID的代碼以更新元素。

相反,你可能想使用此代碼:

var id = '#' + this.svgObject.id +'_ZoomArea'; 
var rectOptions = { 
      'x': x, 'y': y, 'width': width, 'height': height, 
      'fill': 'rgba(69,114,167,0.25)', 'stroke-width': 1, 'stroke':'rgba(69,114,167,0.25)','clip-path': 'url(#' + this.svgObject.id +'_ChartAreaClipRect)' 
     }; 
$(id).attr(rectOptions); 
+0

thanks.will檢查並通知您。 – SivaRajini