如何获得 svg: g 元素的宽度

我目前正在使用 JavaScript 中的 svg元素。

我的问题是,我有一个 svg元素,其中有多个 svg:g元素。在我的 svg:g元素中,还有其他各种 svg 元素。

    <svg>
<g class="my-class">
<g class "c1">
<text style="font-size: 9" x="0" y="-4"> john </text>
<text style="font-size: 9" x="70" y="-4"> 13 </text>
</g>
<g class="c2">
<text style="font-size: 9" x="0" y="-4"> john </text>
<text style="font-size: 9" x="70" y="-4"> 13 </text>
</g>
<g class="c3">
<text style="font-size: 9" x="0" y="-4"> john </text>
<text style="font-size: 9" x="70" y="-4"> 13 </text>
</g>
</g>
</svg>

g将动态附加到

G“ my _ class”

现在我想设置我的 svg宽度等于宽度的 g.my_class宽度。

var svgWidth  =   $('.my-class').width()
alert(svgWidth);

但它给了我零。我怎么可能在我的浏览器上看到它在一个黄色的工具提示框enter image description here

当我选择这一行时。

有人能好心地指导我吗? 我这样做对吗? 或者我怎样才能做到这一点? 谢谢

50716 次浏览

试试 .getBoundingClientRect

$('.my-class')[0].getBoundingClientRect().width;

演示 http://jsfiddle.net/5DA45/

我推荐 getBBox(SVG 1.1的一部分)而不是 getBoundingClientRect(不是) :

$('.my-class')[0].getBBox().width;

演示 http://jsfiddle.net/TAck4/