不间断的空间

这显然不工作:

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

有没有关于一个非破坏性的空间或JavaScript不喜欢的&符号?

  是一个HTML实体。 在做.text() ,所有的HTML实体都被解码为它们的字符值。

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

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

或者,您也可以手动从字符代码创build字符,它的Javascript转义forms:

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

有关String.fromCharCode更多信息,请点击这里:

fromCharCode – MDC Doc Center

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

Windows-1252字符集
UTF-8字符集

记住.text()去掉标记,所以我不相信你会find  在非标记结果中。

做出答复….

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

显示一个警报,因为返回标记的ASCII等价物。

该实体在浏览器呈现页面时被转换为它所表示的字符。 JS(jQuery)读取呈现的页面,因此它不会遇到这样的文本序列。 它可能遇到这样的事情的唯一方法是,如果你是双编码实体。

text()的jQuery文档说

由于不同浏览器中HTMLparsing器的差异,返回的文本可能在换行符和其他空白处有所不同。

我会使用$td.html()来代替。