2016-04-26 188 views
-1

我新換D3,我曾在圖表,對鼠標懸停事件不會被炒到點擊事件火災。如果單擊事件在某個節點上被觸發,鼠標懸停僅適用於那些子節點。鼠標懸停事件不解僱了點擊事件火D3

代碼:

var nodeEnter = node.enter().append("g") 
    .attr("class", "node") 
    .attr("transform", function(d) { return "translate(" + source.y0 + "," + source.x0 + ")"; }) 
    .attr('pointer-events', 'all') 
    .on("mouseover", overNode) 
    .on("mouseout", outNode) 
    .on("mouseUp",mouseUp) 
    .on("click", click); 

function click(d) { 
    if (d.children) { 
     d._children = d.children; 
     d.children = null; 
    } else { 
     d.children = d._children; 
     d._children = null; 
    } 
    update(d); 
} 
+0

可能是由於您追加'g'。這是一個分組元素,除了分組多個元素的方式外,它不是其他任何東西。另外,.attr('指針事件...應該是.style('指針事件.... – thatOneGuy

+0

@thisOneGuy甚至指針事件被移除也不起作用。我該如何前進? – sivabalaji

+0

你能看到你的節點嗎?除去追加( 'G') – thatOneGuy

回答

0

這裏是你的提琴:https://jsfiddle.net/thatoneguy/xdpzrxx1/2/

這是工作。我已經添加了以下測試:

.on("mouseover", function(d){ console.log(d); overNode(d)}) 
    .on("mouseout", function(d){ console.log(d); outNode(d)}) 
    .on("mouseUp", function(d){ console.log(d); mouseUp(d)}) 
    .on("click", function(d){ console.log(d); click(d)}); 

我也動了你的DragDropManager對象的JavaScript的頂部,之前沒有得到發現。這是由於它是全球性的,並且在其他依賴於它的因素創建之後實例化的。