2016-07-26 99 views
0

的屬性我這裏(的一部分)HTML:訪問parent屬性設置兒童

<g style="fill: rgb(49, 130, 189);" transform="translate(0,0)" x="200" class="chr"> 
    <circle cy="175.92776604033872" r="3"></circle> 
    <circle cy="292.4129588695106" r="3"></circle> 
</g> 

我想設置圓的CX屬性,爲此,我需要訪問母公司的x屬性。

ch.selectAll('circle') 
    .data((d) => { 
     return d.values; 
    }) 
    .enter().append('circle') 
    .attr('r', 3) 
    .attr('cx', (d) => { 
     ... 
    }) 
    .attr('cy', (d) => { 
     return y(d.num); 
    }); 

有誰知道設置cx值時,我怎麼能得到x屬性的值:下面我的代碼給出?提前致謝!!

+3

只是一個提示,與您的問題無關:g元素沒有x或y位置。 –

+1

@GerardoFurtado有趣的是,我前幾天還在[評論]中將這個引入了用戶的注意(http://stackoverflow.com/questions/38544504/reading-csv-data-to-display-in-scatter-plot -with-d3-js#comment64484402_38544504)在他們的另一個問題相同的代碼。另一方面,這些屬性是沒有意義的,並且不會對SVG造成任何傷害,但它可能是某種方式來傳達像Mark在他的回答中提到的通知。 – altocumulus

+0

是的,你是絕對正確的,你可以用它來存儲信息。但我認爲編程人員和程序員應該使用相同的*語言*:當在SVG中看到「x」時,人們會考慮x位置...... –

回答

2

考慮到@ GerardoFurtado的評論,我會認爲你是積攢使得x值有其他原因,然後定位...

可以作爲訪問父(與x屬性):

.attr('cx', function(d) { 
    var parentXValue = d3.select(this.parentNode).attr("x"); 
}) 
+2

Upvoted。我沒有測試過,但是在那種情況下用'this'做胖箭頭是否正常? –

+2

@GerardoFurtado好點!使用胖箭頭功能時,'this'不會引用元素。您將需要一個正常的函數表達式。 – altocumulus

+1

@GerardoFurtado和高積雲,感謝捕捉!修正了我的答案。 – Mark