如何在d3.js中select当前元素的父元素
我想访问当前元素的父元素
这是HTML的结构
svg g id=invisibleG g circle g circle g circle
基本上我想在鼠标hover在圆圈内时添加文本。
所以我希望在任何特定的圈子上hover
svg g id=invisibleG g circle --> radius is increased and text presented inside that text g circle g circle
hover时,我可以通过d3.select(this)select当前元素,我怎样才能获得根元素(g在我的情况下)?
你可以使用d3.select(this.parentNode)
来select当前元素的父元素。 而为了select根元素,你可以使用d3.select("#invisibleG")
。
为了得到根元素g(如cuckovic指出)可以得到使用:
circle = d3.select("#circle_id"); g = circle.select(function() { return this.parentNode; })
这将返回一个d3对象,您可以在其中调用如下函数:
transform = g.attr("transform");
运用
d3.select(this.parentNode)
将只返回SVG元素。 下面我testing了不同的变体。
// Variant 1 circle = d3.select("#c1"); g = d3.select(circle.parentNode); d3.select("#t1").text("Variant 1: " + g); // This fails: //transform = d3.transform(g.attr("transform")); // Variant 2 circle = d3.select("#c1"); g = circle.node().parentNode; d3.select("#t2").text("Variant 2: " + g); // This fails: //transform = d3.transform(g.attr("transform")); // Variant 3 circle = d3.select("#c1"); g = circle.select(function() { return this.parentNode; }); transform = d3.transform(g.attr("transform")); d3.select("#t3").text("Variant 3: " + transform);
<script src="ajax/libs/d3/3.4.11/d3.min.js"></script> <html> <body> <svg height="200" width="300"> <g> <circle id="c1" cx="50" cy="50" r="40" fill="green" /> </g> <text id="t1" x="0" y="120"></text> <text id="t2" x="0" y="140"></text> <text id="t3" x="0" y="160"></text> </svg> </body> </html>