2012-07-19 22 views
0

我正在使用SVG格式的县的美国地图。我没有生成这张地图。它有PATH元素,如:从JavaScript中访问SVG中的Inkscape项目

<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。

回答

2

像这样的东西应该工作读取属性值(使用元素的ID你的样品中):

var myLabel = $('#12057').attr('inkscape:label'); 
+0

按照广告制作! – wergeld 2012-07-19 18:44:38

0

你可以用jQuery选择这个元素,但你不能操纵它,这不是jQuery所做的,但你可以使用Raphael.js来选择和操作该路径。
其实我觉得有一个例子就像在拉斐尔演示页。

+0

我不想操纵该对象。我只想将它读入一个var并显示它。 – wergeld 2012-07-19 18:33:00

+0

与Raphael做起来会更容易,相信我看看 – 2012-07-19 18:34:47

+0

添加一个新的js库几乎是不行的,除非这是获取这个元素的绝对唯一可能的方式 - 这似乎不太可能。 – wergeld 2012-07-19 18:38:37

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); 
     }