我创建了一个包含.on("click")
行为的SVG元素,并附加了具有.on("click")
的 g 元素,我认为可以使用 d3.event.stopPropagation()
来防止 g 元素点击事件触发 SVG 的点击事件。但实际上两个点击事件都会继续触发,所以我可能没有将 stopPropagation
放在正确的位置。
svg = d3.select("#viz").append("svg:svg")
.attr("width", 800)
.attr("height", 800)
.on("mousedown", mousedown);
sites = svg.selectAll("g.sites")
.data(json.features)
.enter()
.append("svg:g")
.on("click", siteClick)
;
sites.append("svg:circle")
.attr('r', 5)
.attr("class", "sites")
;
function mousedown() {
console.log("mouseDown");
}
function siteClick(d, i) {
d3.event.stopPropagation();
console.log("siteClick");
}
d3.event.stopPropagation()
。你的代码将无法工作,因为d3.event.sourceEvent
是未定义的。我已经为你添加了一个示例。 - Jason Davies