Вместо использования .text
используйте .contents
, чтобы получить все узлы (включая текстовые узлы), а затем использовать each
перебрать их и получить только текст текстовых узлов:
var text = [];
$("div.A").contents().each(function() {
if (this.nodeType === 3) { // 3 = Text node
text.push(this.nodeValue);
}
});
console.log(text); // ["I'm in A.", "I'm in A, too."]
(Фактические авторизованы содержимое, вероятно, имеют пробелы вокруг них, как пробелы в текстовом узле, в зависимости от точной разметки)
Или, если вы предпочитаете:.
var text = $("div.A")
.contents()
.filter(function() {
return this.nodeType === 3; // 3 = Text node
})
.map(function() {
return this.nodeValue;
})
.get();
Который выглядит намного опрятнее в ES2015 +:
let text = $("div.A")
.contents()
.filter((i, e) => e.nodeType === 3)
.map((i, e) => e.nodeValue)
.get();