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>
Ответы
Ответ 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(" ");