Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery和CSS设置d3元素的样式_Javascript_Jquery_Css_D3.js - Fatal编程技术网

Javascript 使用jQuery和CSS设置d3元素的样式

Javascript 使用jQuery和CSS设置d3元素的样式,javascript,jquery,css,d3.js,Javascript,Jquery,Css,D3.js,我有个技术问题。我想知道是否有可能用jQuery设计d3元素的样式 例如,来自d3站点的“Collatz图”示例正在生成带有小标签的圆形节点 在这种情况下,数字1、2、3等等。这个数字只不过是一段代码 <text dy=".31em" text-anchor="start" transform="rotate(90)translate(8)">32</text> 在我的代码中,d3和jQuery都在工作(我可以看到一个图表),jQuery也在工作(例如,我可以使用常规

我有个技术问题。我想知道是否有可能用jQuery设计d3元素的样式

例如,来自d3站点的“Collatz图”示例正在生成带有小标签的圆形节点

在这种情况下,数字1、2、3等等。这个数字只不过是一段代码

 <text dy=".31em" text-anchor="start" transform="rotate(90)translate(8)">32</text>
在我的代码中,d3和jQuery都在工作(我可以看到一个图表),jQuery也在工作(例如,我可以使用常规HTML元素创建实例样式或执行其他操作)。但当我尝试d3样式元素时,我没有得到任何结果


如果有任何提示或建议,我将不胜感激。

为什么不使用d3来设计元素的样式呢

d3.select(".nome_class").on('click', function(){
    d3.select(this).attr("style", "border: 3px solid red;")
})

您也可以这样做,或者

是的,您可以这样做,但是,当针对
元素时,您必须选择样式属性,例如。例如,在该站点中,如果打开开发工具并粘贴/执行以下内容,您将看到更改

$('circle').css('stroke', 'green')
$('circle').css('fill', 'red')
编辑

根据讨论,您可以使用jQuery将事件处理程序附加到
元素上,并执行您希望执行的任何其他操作

$('g').click(function(e) {
    console.log($(this).children().closest('text').text());
    // do whatever else  
});

长话短说:不要这样做!尝试搜索on,以便查找在尝试使用jQuery操作svg时可能遇到的各种问题。尽管有很多方法可以解决这个问题,但大多数方法都涉及到大量的调整和使用纯JavaScript进行操作,而不涉及jQuery

jQuery被设计用于处理html,这会导致处理svg等其他名称空间的困难。在jQuery的bug追踪器上有一些bug报告,但是jQuery基金会已经关闭了所有这些bug,并在其页面上列出这些问题的时候。关于SO的另一个问题还有一个问题,该问题最近刚刚获得一项赏金,对涉及的技术问题提供了更详细的见解


我自己结合了jQuery和D3,但根据它们的设计目的将它们分开使用:jQuery用于HTML操作,D3用于处理SVG。

从“css”是动词的时候开始?真的!我的目标是使用jqueryui在用户单击圆圈/文本时弹出一些表单。这也可行吗?当然!假设我们使用的是您在问题中提到的站点,请在控制台中运行引用的函数或将其放在页面上。。不是…就是…单击
并获取相关数据-做任何其他事情@nykon感谢您提供有用的信息!你能推荐一些我可以用来在点击svg元素后弹出表单的库吗?你最好使用D3。可以使用d3.select(节点)访问html和svg dom。您可以单独使用D3打开弹出窗口,或者只使用D3在SVGDOM节点上注册一些处理程序,让它们稍后调用jQuery函数。只是不要使用jQuery来处理svg的dom。
$('g').click(function(e) {
    console.log($(this).children().closest('text').text());
    // do whatever else  
});