【发布时间】:2016-03-08 21:21:42
【问题描述】:
我正在尝试在 d3 强制布局中的节点上编写单击、切换功能,但没有任何东西可以帮助我弄清楚如何使其工作。这个想法是,当您单击一个节点时,屏幕左侧会出现一个 svg,当您再次单击时,它会消失。这是我在没有任何运气的情况下尝试的代码:
var tooltip = svg.append("rect")
.attr("x", -300)
.attr("y", 0)
.attr("width", 300)
.attr("height", height)
.attr("color", "black")
.attr("opacity", 0.8);
var toggleWindow = (function () {
var currentStatus = -300;
return function () {
currentStatus = currentStatus === -300 ? 0 : -300;
d3.select(tooltip).attr("x", currentStatus);
};
})();
var node = svg.selectAll(".node")
.data(json.nodes)
.enter().append("g")
.on("mouseover", mouseover)
.on("mouseout", mouseout)
.on("click", toggleWindow)
.call(force.drag);
这里是完整代码的链接:http://plnkr.co/edit/nwmUN4RzAwam9dE5bCEj?p=preview
【问题讨论】:
-
当前左侧有一个黑色矩形...您是说它应该在第一次单击时滑入,然后在第二次单击同一节点时滑出?如果有人点击 node1 然后点击 node2.. 会发生什么?
-
是的,它应该在第一次单击时向右滑出,并在您单击节点时滑入。您单击的每个节点都会发生这种情况。但不同之处在于,对于每次点击,它都会使用对应于每个特定节点的 json 文本填充矩形。
标签: d3.js toggle force-layout