You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

D3.js如何选择类名含"global_read"的元素?类似jQuery选择器

在D3 v5中选择类名包含指定子串的元素

没问题,我来帮你搞定这个选择器的问题~你遇到的报错是因为用了不符合CSS规范的选择器语法,D3的selectAll底层依赖浏览器原生的querySelectorAll,所以得严格遵循标准CSS选择器的写法。

错误原因分析

你写的g.selectAll("g [class=*global_read]")有两个明显的语法问题:

  • 属性包含匹配的运算符顺序错了:应该是*=(表示包含),而不是=*
  • 属性值必须用引号包裹,不管是单引号还是双引号

正确的写法

要选择类名包含global_read子串的元素,标准的CSS属性包含选择器格式是[class*="global_read"],对应到D3里的写法分两种场景:

  • 如果是要选择当前g元素下所有后代中类名包含global_read的元素:
    g.selectAll('[class*="global_read"]')
    
  • 如果是要选择当前g元素下后代中的g元素且类名包含global_read:
    g.selectAll('g[class*="global_read"]')
    

额外补充

D3完全支持所有标准CSS选择器,除了包含匹配*=,你还可以用:

  • [class^="global_read"]:匹配类名以global_read开头的元素
  • [class$="global_read"]:匹配类名以global_read结尾的元素
    这些和jQuery里对应的属性选择器功能是一致的,只要严格遵循CSS语法就不会出错啦。

内容的提问来源于stack exchange,提问作者Inkane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:23:14