2014-04-18 126 views
1

一个SVG节点我有以下代码:获取最接近的元素使用jQuery最接近()函数

$(document).ready(function() { 

    var svg = d3.select("svg"); 

    svg.append("circle") 
      .attr("class","cursor") 
      .attr("r", 8) 
      .attr("cx", 100) 
      .attr("cy", 100) 
      .on("click", test); 

    function test(d) 
    { 
     f = d3.select(this); 

     console.log($(f).closest('svg').css('border-color','red')); 


    } 

}); 

我注意到,这是行不通的。但是,如果我在非SVG元素(像div或canvas这样的常规html元素)上执行相同的功能,它会完成它应该做的事情。 我首先想到的问题是d3的选择。然后我用类属性直接解析元素:

console.log($('.cursor').closest('svg').css('border-color','red')); 

没有成功。
有没有办法让jquery最接近()函数与SVG标签内的元素一起工作?

谢谢

回答

1

$结束语一D3的选择是无效的。使用$(this)而不是$(f)。点击处理程序中的this关键字被设置为所点击的DOM元素,这正是您所需要的。

+0

非常感谢你的工作。 :) – cgadjoro