如何在JavaScript字符串中表示不间断的空格?

时间:2011-03-08 20:32:13

标签: javascript jquery

这显然不起作用:

X = $td.text();
if (X == ' ') {
X = '';
}

有什么关于不间断的空间或JavaScript不喜欢的&符号吗?

4 个答案:

答案 0 :(得分:198)

 是一个HTML实体。执行.text()时,所有HTML实体都会被解码为其字符值。

不使用实体进行比较,而是使用实际原始字符进行比较:

var x = td.text();
if (x == '\xa0') { // Non-breakable space is char 0xa0 (160 dec)
  x = '';
}

或者你也可以用Javascript转义形式手动创建字符代码中的字符:

var x = td.text();
if (x == String.fromCharCode(160)) { // Non-breakable space is char 160
  x = '';
}

有关String.fromCharCode的更多信息,请访问:

  

fromCharCode - MDC Doc Center

有关不同字符集的字符代码的更多信息,请访问:

  

Windows-1252 Charset
  UTF-8 Charset

答案 1 :(得分:7)

请记住.text()删除了标记,因此我不相信您会在非标记结果中找到 

提出答案....

var p = $('<p>').html('&nbsp;');
if (p.text() == String.fromCharCode(160) && p.text() == '\xA0')
    alert('Character 160');

显示警报,而不是返回标记的ASCII等效值。

答案 2 :(得分:2)

当浏览器呈现页面时,该实体将转换为它所代表的char。 JS(jQuery)读取呈现的页面,因此它不会遇到这样的文本序列。它可能遇到这种情况的唯一方法是你是双重编码实体。

答案 3 :(得分:1)

text()的jQuery文档说

  

由于HTML解析器的变化   在不同的浏览器中,文本   返回可能会有所不同   其他空白区域。

我会改用$td.html()