如何将jQuery对象转换为d3对象?

时间:2015-01-20 12:11:53

标签: javascript jquery d3.js

我在使用jQuery和D3js时遇到了问题。

我有一个名为" elem"的jQuery元素我想做一些D3js功能。

此代码有效:

d3.select("body").append("svg").attr("width", 300).attr("height", 300).append("g").attr("transform", "translate(150,150)").selectAll("text").data(words).enter().append("text")......

此代码不

elem.append("svg").attr("width", 300).attr("height", 300).append("g").attr("transform", "translate(150,150)").selectAll("text").data(words).enter().append("text")......

那么如何将jQuery对象转换为D3对象?

2 个答案:

答案 0 :(得分:33)

您可以使用jquery对象上的.get()方法或数组表示法从jQuery对象中获取DOM元素,然后像使用任何DOM元素一样使用d3选择器选择它们。

请注意,虽然两者都有效,但jQuery faq mentions that array notation is faster.

d3.select($("#selection").get(0));
d3.select($("#selection")[0]); // equivalent to above but faster

编辑:感谢Ken Fox指出jQuery faq。

答案 1 :(得分:3)

您无法直接转换对象。您需要使用d3js重新选择元素。 d3js选择器就像这样工作

d3.select("#mydiv")

因此,只需从id元素中提取jQuery,就像这样

d3.select("#" + elem.attr("id")).append("svg").attr("width", 300)... 

当然,如果您仅使用jQuery选择元素,则应切换到d3js选择。

编辑:我更喜欢Ozan的上述答案,请使用它!