Javascript Jquery不能调用单击,但可以用鼠标手动调用

Javascript Jquery不能调用单击,但可以用鼠标手动调用,javascript,jquery,d3.js,Javascript,Jquery,D3.js,我正在使用D3创建一个地图,其中包含一些分散在周围的文本对象。每个文本对象都附加了一个ID属性和一些单词作为其值。以下是一些示例代码,以了解我正在创建的内容: g.selectAll("text") .data(data).enter() .append("text") .attr("id", function(d,i){return "cows_name";}) .text( function(d) { return "cows"; }) .on("cl

我正在使用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)中手动单击“cows”文本对象时,会调用警报事件,我可以得出结论,id属性返回“cows\u name”

但是,当我尝试在Selenium或Scratchpad中调用此JQuery代码时:

var toClick = $("#cows_name")
toClick.click();
什么也没发生。在理解使用上述脚本生成的D3对象“单击”的正确方式时,我是否遗漏了什么?

您可以使用jQuery


首先,让我们将您的
更改为单击

var toClick = $("#cow_name")[0];
这将选择实际的DOM元素。在将您的
更改为单击后,我发现这个很酷的函数可以“模拟”单击事件:

function fakeClick(target) {
    var event = new Event('click');
    target.dispatchEvent(event);
};
然后,你称之为:

fakeClick(toClick);

这里是小提琴,使用SVG元素:

你做了
selectAll(“text”)
,是不是不止一个元素有id
cows\u name
,因此它是模糊的?click()是一个存在于HTML元素上的方法,而不是存在于SVG元素上。你能控制log$(这个)在警报位置查看是否返回cow_名称element@Paul关于可能的模糊性,您是正确的,但是,我的数据收集只有一个条目。对不起,我应该说得更具体一些。@RobertLongson在SVG元素上执行此操作的正确方法是什么?.trigger似乎与单击没有任何相似之处。I console.log()在我手动单击该元素时,它确实包含触发器方法。请查看问题下方的更新注释,因为该对象的选择器似乎为空。不确定这是否有任何问题
fakeClick(toClick);