这显然不起作用:
X = $td.text();
if (X == ' ') {
X = '';
}
有没有关于不间断空格或 JavaScript 不喜欢的&符号的东西?
这显然不起作用:
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 = '';
}
或者,您也可以从字符代码手动创建字符,以 Javascript 转义形式:
var x = td.text();
if (x == String.fromCharCode(160)) { // Non-breakable space is char 160
x = '';
}
有关更多信息,String.fromCharCode
请访问:
此处提供有关不同字符集的字符代码的更多信息:
请记住,.text()
删除标记,因此我不相信您会
在非标记结果中找到。
在回答中......
var p = $('<p>').html(' ');
if (p.text() == String.fromCharCode(160) && p.text() == '\xA0')
alert('Character 160');
显示警报,因为返回的是标记的 ASCII 等价物。
当浏览器呈现页面时,该实体将转换为它所代表的字符。JS (jQuery) 读取渲染的页面,因此不会遇到这样的文本序列。它可能遇到这种事情的唯一方法是如果您是双重编码实体。
jQuery 文档text()
说
由于不同浏览器中 HTML 解析器的差异,返回的文本在换行符和其他空白处可能会有所不同。
我会用$td.html()
。