这显然不起作用:
X = $td.text();
if (X == ' ') {
X = '';
}
有什么关于不间断的空间或JavaScript不喜欢的&符号吗?
答案 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
的更多信息,请访问:
有关不同字符集的字符代码的更多信息,请访问:
答案 1 :(得分:7)
请记住.text()
删除了标记,因此我不相信您会在非标记结果中找到
。
提出答案....
var p = $('<p>').html(' ');
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()
。