2014-04-18 146 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