【发布时间】:2016-06-22 13:51:50
【问题描述】:
我正在使用 D3 创建一个地图,其中包含一些散落在各处的文本对象。每个文本对象都有一个附加的 ID 属性和一些用于其值的单词。下面是一些示例代码来了解我正在创建的内容:
g.selectAll("text")
.data(data).enter()
.append("text")
.attr("id", function(d,i){return "cows_name";})
.text( function(d) { return "cows"; })
.on("click", function(d) {
alert("### we are in here" with $(this).attr("id"));
})
当我在浏览器 (Firefox 45) 中手动单击“奶牛”文本对象时,会调用警报事件,并且我可以得出结论,id 属性返回“奶牛名称”。
但是,当我尝试在 Selenium 或 Scratchpad 中调用此 JQuery 代码时:
var toClick = $("#cows_name")
toClick.click();
什么都没有发生。在了解“单击”使用上述脚本生成的 D3 对象的正确方法是什么时,我是否遗漏了什么?
【问题讨论】:
-
你是
selectAll("text"),难道不是on element 的id 为cows_name,因此它是模棱两可的? -
click() 是一种存在于 HTML 元素而非 SVG 元素上的方法。
-
您能否在警报位置控制台记录 $(this) 以查看它正在返回 cow_name 元素
-
@Paul 您对可能的歧义是正确的,但是,我的数据收集只有 1 个条目。抱歉,我应该更具体一点。
-
@RobertLongson 在 SVG 元素上执行此操作的正确方法是什么?
标签: javascript jquery d3.js