Це, мабуть, не працює:
X = $td.text();
if (X == ' ') {
X = '';
}
Чи є щось про нерозривний простір або амперсанд, який JavaScript не любить?
.text()викреслює розмітку, тому я не вірю, що ви знайдете результат без розмітки.
Це, мабуть, не працює:
X = $td.text();
if (X == ' ') {
X = '';
}
Чи є щось про нерозривний простір або амперсанд, який JavaScript не любить?
.text()викреслює розмітку, тому я не вірю, що ви знайдете результат без розмітки.
Відповіді:
- це сутність 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 розмітки.
$("<div> </div>").text().charCodeAt()дає 160(unicode for nbsp)
Документи jQuery для text()говорить
У зв'язку з різницею HTML-парсерів у різних браузерах повертається текст може відрізнятися в нових рядках та іншому пробілі.
Я б використовував $td.html()замість цього.