Подтвердить что ты не робот

JQuery.text() эквивалент, который преобразует теги в пробелы

Это тривиально, чтобы получить текст из выбора jQuery:

<span id="foo">hello world</span>

$('#foo').text();

hello world

Но когда выбор jQuery содержит теги <br>, они представляют собой концептуальные символы новой строки, которые являются пробелами. К сожалению, .text() полностью разделяет их:

<span id="foo">hello<br>world</span>

$('#foo').text();

helloworld

Как извлечь текст из такого диапазона, чтобы вместо него было hello world?

Конечно, это тривиальный пример, изобретенный, чтобы держать проблему ясной. Реальный ответ должен быть "эквивалентен .text()" и обрабатывать произвольный HTML, конечно. Здесь несколько более сложный пример, также составленный:

<div id="foo"><span class="bar"><em>hello</em><br></span>world</div>
4b9b3361

Ответ 1

Как Mims предлагает использовать replaceWith(), чтобы изменить <br> на пробелы, но чтобы не изменять исходный элемент, используйте clone(), чтобы сделать клон элемента.

var foo = $("#foo").clone();
foo.find("br").replaceWith(" ");
var text = foo.text();

DEMO

Ответ 2

Используйте .html() вместо .text()

$('#foo').html();

ИЛИ используйте метод DOM .innerText

$('#foo')[0].innerText ;

Check Fiddle

Ответ 3

Вы можете использовать функцию replaceWith().

$("br").replaceWith(" ");