Jquery 计算d3线的左偏移位置

Jquery 计算d3线的左偏移位置,jquery,d3.js,offset,Jquery,D3.js,Offset,我试图计算一条d3线的偏移量,这样我就可以从这条线到一个具有相同类或属性的图像绘制一个连接。然后我将这个值传递给一个名为draw connection lines的函数。例如画一条线,给乔一张乔的照片。jQuery不识别d3元素来计算它们的位置或偏移量 例如,这将返回null: var imageLeft=d3.selectAll('g.last-'+lastname).offset().left 所以,如果我试图根据悬停时的类名选择一条特定的线——我如何计算偏移量呢。我在这里尝试了不同的组合,

我试图计算一条d3线的偏移量,这样我就可以从这条线到一个具有相同类或属性的图像绘制一个连接。然后我将这个值传递给一个名为draw connection lines的函数。例如画一条线,给乔一张乔的照片。jQuery不识别d3元素来计算它们的位置或偏移量

例如,这将返回null:

var imageLeft=d3.selectAll('g.last-'+lastname).offset().left

所以,如果我试图根据悬停时的类名选择一条特定的线——我如何计算偏移量呢。我在这里尝试了不同的组合,但没有效果:

  var imageLeft = d3.selectAll('g.last-'+lastname).classed('highlighted',true).node().getBoundingClientRect();
  var imageLeft = document.getElementsById('g').offsetLeft;
  var imageLeft =  $(this).attr('id',lastname).offset().left;

  var imageLeft = $(this).position().left ;
  var imageLeft = d3.select(this).select('g.last-'+lastname).offset().left;
                 var imageLeft = $(this).find('.div-line').position().left ;
以下是我需要此值的函数(绘制线条):

感谢您的帮助--请在此处拨弄:

要获得左偏移的原始线的绘制方式如下:

Plot.experience.enter().append('g')
  attr('class',function(d) 
 {return d.First+ ' last-' +d.Last;}) 
 .attr('transform',function(d,i) {return 'translate('+  (Settings.person_interval*i+Settings.chartLeft)+',0)';}) 
 .attr('x1',0) 
 .attr('x2',0) 
 .attr('y1',Settings.chartTop) 
 .attr('y2',options.height); 

getBBox()或getBoundingClientRect()可能会提供您所需的内容。您是否可以使用D3实现所有功能?看起来您使用JQuery只是为了获得坐标,而D3也可以。@Larskothoff您将如何使用D3获得坐标?您首先是如何设置坐标的?绘制线条时,线条的坐标将在转换中设置:Plot.experience.enter().append('g').attr('class',函数(d){return d.First++'last-'+d.last;}).attr('transform',函数(d,i){return'translate(+'Settings.person\u interval*i+Settings.chartLeft++',0');}).attr('x1',0.).attr('x2',0.).attr('y1',Settings.chartTop.attr('y2',options.height);
Plot.experience.enter().append('g')
  attr('class',function(d) 
 {return d.First+ ' last-' +d.Last;}) 
 .attr('transform',function(d,i) {return 'translate('+  (Settings.person_interval*i+Settings.chartLeft)+',0)';}) 
 .attr('x1',0) 
 .attr('x2',0) 
 .attr('y1',Settings.chartTop) 
 .attr('y2',options.height);