2016-06-24 9 views
0

Ich versuche, Mauskoordinaten relativ zu einem group Element zu erhalten. Hier ist der Code:Welchen Parameter benötigt d3.mouse()

var backRect = chart.append("g").attr("class", "rect"); 
var g = backRect.append('rect') 
     .style('stroke', 'none') 
     .style('fill', '#FFF') 
     .style('fill-opacity', 0) 
     .attr({ 
      width: width, 
      height: height, 
      'pointer-events': 'none', 
      'class': 'backRect' 
     }); 

// the code below is inside another container's event; but I want mouse coordinates relative to the above rect, hence can't use d3.mouse(this) 
// get mouse pointer location 
     var coordinates = [0, 0]; 
     coordinates = d3.mouse(backRect); // d3.select(".rect") does not work either 

aber die folgende Fehlermeldung erhalten:

d3.min.js:1 Uncaught TypeError: n.getBoundingClientRect is not a function

Nach dem d3 mouse docs d3.mouse() nimmt einen Behälter, der svg oder g Element sein kann.

Welchen Parameter sollte ich an d3.mouse() übergeben? Ich habe versucht d3.select(".rect"), die auch nicht funktioniert.

Antwort

1

d3.mouse(backRect.node()) Verwendung hat den Trick.

+1

Akzeptieren Sie Ihre Antwort (Sie können das in SO tun) –

+1

Ja, ich werde einmal 48 Stunden vergangen .. :) danke – akshayKhot

0

Sie sollten d3.mouse() innerhalb eines Ereignisses verwenden, um die Werte relativ zum übergebenen Container abzurufen.

Überprüfen dieser Block

http://bl.ocks.org/hlucasfranca/f133da4493553963e710

svg.on("click", function() { 
      var coords = d3.mouse(this); 
      ........ 
      ........ 
}) 
+0

danke für die Rückmeldung, aber ich verwende bereits 'd3.mouse()' in einem Ereignis (der Code oben ist nur eine saubere Version des Originals) und benötigt die Maus Koordinaten relativ zu einem anderen Container (backRect). Danke – akshayKhot

+0

Sie sollten Ihre Frage wahrscheinlich bearbeiten, um das zu verdeutlichen. 'd3.mouse (backRect)' scheint nicht Teil einer Event-Funktion zu sein. – Sundeep

+0

Aktualisiert den Code – akshayKhot