2015-11-11 89 views
3

在D3中,我已綁定一個節點上的鼠標按下事件的功能我想執行:如何訪問原始事件對象時D3事件綁定

let node = gA.svg.selectAll('.node').data(gA.force.nodes(), gA.node_id) 
let node_group = node.enter().append('g') 
    .classed('node', true) 
    .call(gA.drag) 

node_group.append('circle') 
    .classed('node-circle', true) 
    // we may consider adding the position too. it will get updated on the 
    // next tick anyway, so we will only add it here if things look glitchy 
    .attr('r', gA.node_radius) 
    .on(gA.circle_events) 
    .on('mousedown', mousedown) 
    .on('mouseup', mouseup) 

只有最後一行是真正的與此有關。這和我使用d3的事實。

但現在當我定義我的鼠標鬆開功能...

function mouseup(datum, something1, something2) { 
    alert("But where is the Event object? :( :'( ") 
} 

數據是綁定到SVG「圓圈」的數據。 something1似乎是鼠標相對於元素的x位置(我最好猜測)。而東西2似乎是y位置。

但是,如何訪問該事件?我需要訪問Event.clientX。

+0

我可能可以做到這一點。如果我可以訪問svg圈子,我可以尋找它的「頂部」和「左側」屬性來獲得它的位置。但我不知道如何訪問它。只有數據。 – mareoraft

回答

3

這是well documented

d3.event

保存當前的事件,如果有的話。這個全局是在on操作符的事件監聽器回調期間註冊的。在finally塊中通知偵聽器後,當前事件將重置。這允許偵聽器函數具有與其他運算符函數相同的形式,傳遞當前數據d和索引i。

+0

謝謝拉爾斯!希望我自己找到了。 – mareoraft