今、私は一つの問題に苦しんでいます。以下に示すコードを見てください。私は 2 つの機能を実装したいと考えています。マウスがその上にあります。
しかし、rect の "pointer-event" の値を all に設定すると、ズームはうまくいきますが、ノードはマウスオーバー イベントをキャッチできません。値を「なし」に設定すると、ノードはマウスオーバー イベントをキャッチできますが、ズームは機能しません。「nodes」と「rect」は別のレイヤーにあるようで、同時にイベントをキャッチすることはできません。
誰でもこれを修正する方法を知っていますか? 前もって感謝します。
var zoom = d3.behavior.zoom()
.scaleExtent([0.1, 10])
.on("zoom", zoomed);
function zoomed() {
container.attr("transform", "translate(" + d3.event.translate +")scale(" + d3.event.scale +")");
}
var container = svg.append("g");
var rect = svg.append("rect")
.attr("width", width/2)
.attr("height", height)
.style("fill", "none")
.style("pointer-events", "all")
.call(zoom);
var node = container.append("g")
.attr("class", "nodes")
.selectAll(".node")
.data(nodes)
.enter().append("g")
.attr("class", "node")
.attr("id",function(d){return d.userID});
node.on("mouseover", function(d) {
alert(d.userID);
});