如何使用d3检索和使用非svg DOM元素的title属性?
在我正在研究的这个D3示例中,当用户在焦点国家/地区上空盘旋时,相应的标题框也会进入悬停状态:
http://bl.ocks.org/wboykinm/6967409
然而,当我试图以另一种方式重复它时(在悬停标题框时改变正确国家的状态),我得到“无法读取未定义的属性”。我已经尝试在这一点上定义了几十种方法,它只是没有返回国家/地区名称值。问题似乎源于这一行:
b.on("mouseover", function(d) {
d3.selectAll("[title=" + d.title + "]").classed("countryActive",true);
});
其中“b”是每个标题框:
b = d3.selectAll(".mminfo");
如果有人能指出必须是一个非常基本的语法错误,我会感到很兴奋。谢谢!
答案 0 :(得分:2)
问题在于您尝试访问绑定到元素的数据(通过d
)而没有绑定元素。也就是说,d
未定义,因为您手动创建.mminfo
元素,而不使用D3 .data().enter()
模式。
虽然标题属于这些元素的属性,但您需要更改的是d.title
到this.title
。工作示例here。