我正在使用D3库。我想以编程方式按编号选择元素,但该ID包含逗号。我正在读取ID作为数据的一部分,所以我无法控制它。
我的代码是:
g.nodes().forEach(function(v) {
d3.select('#'+v+)
.attr("cx", function(){return g.node(v).x; })
.attr("cy", function(){return g.node(v).y; })
});
其中v是与ID匹配的字符串。
具体来说,当我尝试d3.select("#B_ne_,3")
时,我得到d3.js:562 Uncaught DOMException: Failed to execute 'querySelector' on 'Document': '#B_ne_,3' is not a valid selector.(…)
。
我知道我可以使用"#B_ne_\\,3"
选择它,但我怎么能逃避这些字符?
我不使用jquery。
答案 0 :(得分:1)
使用CSS.escape
(截至2017年5月的实验):
var v = "B_ne_,3";
console.log("#" + CSS.escape(v));
旧浏览器有精确的polyfill,但如果你逃避不必要的字符,它会更简单:
var v = "B_ne_,3";
console.log("#" + v.replace(/\W/g, '\\$&').replace(/^\d/, '\\00003$&'));