18

selection.text(' ')似乎转换了特殊字符,因此它呈现实际文本,而不是我想要的空格。有没有办法阻止text()选择的方法为我转义?对于上下文,这是一个表格单元格,对于选择中的某些元素是空的,我需要其中的空间,以便单元格正确呈现。

4

2 回答 2

40

使用 JavaScript Unicode 转义而不是 HTML 实体。 在 HTML 中表示 Unicode 字符 U+00A0 所以

selection.text('\u00A0')

应该做你想做的。

于 2012-10-14T15:26:43.440 回答
9
d3_selectionPrototype.text = function(value) {
    return arguments.length < 1 ? this.node().textContent : this.each(typeof value === "function" ? function() {
      var v = value.apply(this, arguments);
      this.textContent = v == null ? "" : v;
    } : value == null ? function() {
      this.textContent = "";
    } : function() {
      this.textContent = value;
    });
  };

这里重要的一行是在选择上调用 .text() 将在每个元素上设置 textContent 属性。所以在你的情况下正确的做法是使用

selection.text(' ');

因此,如果您想使用空格,那么您只需在文本中使用空格,而不是 html 编码的空格。如果要使用 html 编码的字符,则必须将内容视为 innerHTML。

selection.html('&nbsp;');
于 2012-10-14T14:45:28.670 回答