我如何使用D3来强制用户点击g.node对象内部的圆形对象
How do I used D3 to force a user click on a circle object inside of a g.node object?
当用户在我的D3树中选择一个节点时,我会运行一些非常复杂的代码。我想通过程序强制用户界面单击。我已经尝试了一些关于堆栈溢出的建议,但我认为我有一个特殊的情况。
//This is how I create the nodes...
node = nodeElements.selectAll("g.node")
.data(nodes, function(d) {return d.name;});
nodeEnter = node.enter().append("g")
.attr("class", "node")
.attr("name", function(d){return d.name;});
nodeEnter.append("circle")
.attr("r", 10)
.attr("show", true)
.attr("class", "displayNode")
.on("click", mouseClickNode); //<---I want to trigger this
我认为我应该选择我的节点元素下的圆圈。
我试过很多东西,这里有一些
//Tried
d3.select("g.node[name='someNodeName']>circle.displayNode").on("click")();
//Tried
d3.select("g.node[name='someNodeName']>circle").on("click")();
//I got desperate...
node.filter(function(d){
if(d.name === "someNodeName"){
return d;
}
}).on("click")();
您在选择正确的圆圈来触发事件时遇到问题吗?还是触发本身?选择器g.node[name='someNodeName']>circle.displayNode
看起来不错。
如果处理程序函数使用绑定数据,则.on('click')();
不是您想要的方式。相反,建立自己的活动来启动:
d3.select('#btn').on('click',function(){var e=document.createEvent('UIEvents');e.initUIEvent('click',true,true);d3.select('g.node[name="foo"]>circle.displayNode').node().dispatchEvent(e);})
Fiddle
我不能真正试用您的代码,但我相信我也做过类似的事情。我用的是简单得多的
d3.selectAll('.node')
.on("click",mouseClickNode);
这里发生的情况是,您可以选择类节点中的任何内容。当单击其中一个时,您的函数mouseClickNode将仅为该节点运行。
区别在于我使用selectAll。使用select只会选择第一个节点。
相关文章:
- Node.js中的JavaScript原型对象效率
- Node.js-chai是一个item对象
- 在node.js中使用JavaScript从JSON对象获取和设置文本内容
- 在 Node.JS 中,如何从单独的.js文件中返回整个对象
- 我如何使用D3来强制用户点击g.node对象内部的圆形对象
- 访问Javascript对象-Node.js的作用域问题
- 如何防止bind在使用async.series时更改node.js中的原始对象
- 在 Node.js 中填充来自猫鼬的对象
- 如何使用node.js将不同的json文件加载到不同的json对象中
- 使用 node.js 和 javascript 更新 HTML 对象
- JavaScript node.js 中 pug (jade) 模板上的动态对象键
- 如何将画布对象从子进程流式传输回 Node.js
- 在 Node.JS、Jade 模板和 Javascript Options 对象上
- Raphael JS:如何从 Dom 对象(Element.node)获取 Raphael 元素
- JSON.stringify 在新创建的对象(node、javascript)上失败
- 正在更新数据库中的对象?(Node.js w/Mongoose)
- 从动态mongodb嵌入对象node.js获取数据
- 如何标记“;新的“;用于Javascript中垃圾收集的对象(Node.js)
- 使用id从数组中挑选对象.Node.js和Express
- 将 JSON 转换为 Javascript 数组对象 - node.js