0

我正在使用 SVG 格式的美国县地图。我没有生成这张地图。它具有 PATH 元素,例如:

  <path
     style="font-size:12px;fill:#d0d0d0;fill-rule:nonzero;stroke:#000000;stroke-opacity:1;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none;stroke-linecap:butt;marker-start:none;stroke-linejoin:bevel"
     d="M 445.51998,291.515 L 451.69098,290.644 L 452.25298,290.563 L 452.85298,294.444 L 453.25798,297.212 L 447.56998,298.055 L 448.71498,296.347 L 448.73698,296.297 L 448.98998,295.683 L 449.04798,295.354 L 448.86298,294.795 L 448.70098,294.58 L 446.99298,293.975 L 446.58298,293.98 L 446.24498,294.044 L 445.92498,294.134 L 445.51998,291.515"
     id="12057"
     inkscape:label="Hillsborough, FL" />

我想要做的是鼠标悬停以显示带有县名的弹出文本。在此示例中,我们看到名称保存在inkscape:label="Hillsborough, FL". 我在获取此值时遇到问题。我尝试了各种版本:

this.label
this.inkscape.labe
...

这些中的每一个都因未定义或空错误而失败。如何在 javascript 中阅读此内容?当前的系统规范是在 ASP.NET 站点上运行的 jQuery 1.7.2 和 d3js v2。

4

3 回答 3

3

像这样的东西应该可以读取属性值(使用示例中元素的 ID):

var myLabel = $('#12057').attr('inkscape:label');
于 2012-07-19T18:37:07.857 回答
1

这对我有用。inkscape 属性存储为 NamedNodeMap:

itemClick = function( evt ) {
        var obj = evt.target;
        var label = obj.attributes['inkscape:label'].nodeValue;
        window.alert('Object: ' + obj.id + ' Clicked, Label: ' + label);
        }
于 2014-09-22T15:11:59.563 回答
0

您可以使用 jQuery 选择此元素,但无法操作它,这不是 jQuery 的用途,但您可以使用Raphael.js选择和操作该路径。
实际上我认为在 Raphael Demos Page 中有一个类似的例子。

于 2012-07-19T18:25:55.253 回答