Jquery text(), интерпретировать как новую строку

Получение элемента DOM, подобного этому

$('#id').content().text();

Проблема возникает при использовании

Если это получится:

<p>Hello</p>
<p><br></p>
<p>World</p>

Естественно, в Html выглядит:

Hello 

World

Но этот метод jquery .text() возвращает: HelloWorld

Как интерпретировать <br> как новую строку? ↔ Как получить текст в точности так, как я его вижу в HTML?

.html() дает все теги HTML, которые я не хочу. Мне просто нужен простой текст с пробелами, если это возможно.

Ответы

Ответ 1

.text() - это простой текст без форматирования. Это буквально конкатенация текстовых узлов без каких-либо других кодов HTML (включая новые строки, которые представлены тегами <br> или <p>, а не символами новой строки).

.html() - это точный HTML тега контейнера.

Если вы используете это, это приблизит ваш текст к новым строкам:

var item = document.getElementById("id");
var text = item.innerText || item.textContent;

Он смотрит на .textContent и .innerText из-за проблем с совместимостью браузера.

См. http://jsfiddle.net/jfriend00/Xs5P3/ для рабочей демонстрации.

Поиск Google для "преобразования HTML в текст" дает множество возможностей для исследования.