不间断的空间
这显然不工作:
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(' '); if (p.text() == String.fromCharCode(160) && p.text() == '\xA0') alert('Character 160');
显示一个警报,因为返回标记的ASCII等价物。
该实体在浏览器呈现页面时被转换为它所表示的字符。 JS(jQuery)读取呈现的页面,因此它不会遇到这样的文本序列。 它可能遇到这样的事情的唯一方法是,如果你是双编码实体。
text()
的jQuery文档说
由于不同浏览器中HTMLparsing器的差异,返回的文本可能在换行符和其他空白处有所不同。
我会使用$td.html()
来代替。