检测d3笔刷上的点击事件(v4)

时间:2018-02-28 15:48:21

标签: javascript d3.js event-handling mouseevent

我想在点击(或双击)d3-brush的选定区域时运行javascript函数。我也想明白为什么我的天真方法不起作用。

d3-brush创建了两个rects:一个是类选择,它是当前选择的画笔区域,另一个是类叠加,它覆盖了画笔的最大可能范围。

我能够检测到这两个对象上的mousedown个事件,我只能检测到叠加层上的click(或dblclick个)事件,而我无法检测到{{} 1}}事件:



mouseup

var svg = d3.select("svg")
var g = svg.append("g")
var brush = d3.brush()

var brushGroup = g.append("g")
    .call(brush)

brushGroup.selectAll(".overlay")
    .on("mousedown", () => console.log('mousedown on overlay'))
    .on("click", () => console.log('click on overlay'))
    .on("mouseup", () => console.log('mouseup on overlay'))
		
brushGroup.selectAll(".selection")
    .on("mousedown", () => console.log('mousedown on selection'))
    .on("click", () => console.log('click on selection'))
    .on("mouseup", () => console.log('mouseup on selection'))




我想了解这种不一致。我隐约知道这与d3-brush v4'消费'有关。或者'停止传播'在某些情况下的某些事件。但我找不到哪些文件和何时文件。

我意识到在d3消耗之前我需要在那里处理事件。但是我不知道该怎么做,而且我还没能找到一个例子。

我也找不到d3源的相关部分。我在d3-brush和d3-selection中对<svg width="300" height="200"> <rect width="100%" height="100%" fill="none" stroke="gray"></rect> </svg> <script src="https://d3js.org/d3.v4.min.js"></script>click进行了grep&f,并且没有发现任何相关内容。所以即使被指出正确的代码也会有助于我的理解。

0 个答案:

没有答案