неразрывный пробел
это, по-видимому, не работает:
X = $td.text();
if (X == ' ') {
X = '';
}
есть ли что-то о неразрывном пространстве или амперсанде, что JavaScript не нравится?
4 ответа:
- это 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) считывает визуализированную страницу, поэтому она не будет сталкиваться с такой текстовой последовательностью. Единственный способ, которым он может столкнуться с такой вещью, - это если вы дважды кодируете объекты.