Функция $.parseHTML()

Определение и применение

Функция $.parseHTML() превращает HTML-строку в массив DOM-узлов. Это удобно, когда нужно разобрать фрагмент, проверить его структуру и затем решить, какие узлы вставить в документ.

Синтаксис

JavaScript
const nodes = $.parseHTML(html);
const localNodes = $.parseHTML(html, document, false);
const withScripts = $.parseHTML(html, document, true);

Параметры и возвращаемое значение

html — строка разметки; context — документ создания узлов. С 3.0 при отсутствии контекста используется отдельный документ. keepScripts по умолчанию равен false: исполняемые элементы script исключаются из результата.

Возвращается массив узлов, а не коллекция jQuery и не обязательно только элементы. Пробелы и текст вокруг тегов могут дать текстовые узлы. Для методов jQuery оберните результат в $(). Сам разбор не вставляет узлы на страницу.

Особенности и совместимость

Функция доступна с 1.8. Сохранение скриптов через keepScripts: true не означает их немедленный запуск при разборе; поведение при дальнейшей вставке зависит от способа вставки.

Удаление script не делает произвольный HTML безопасным: остаются обработчики событий, URL и другие активные конструкции. Для недоверенной разметки нужна очистка; для обычного текста используйте .text(). При Trusted Types применяются также требования политики документа.

Документация

Пример использования

Разобрать и выбрать нужный элемент: попробуйте сами

В строке есть текст и два элемента. Пример выбирает только strong и вставляет его; остальные узлы остаются вне страницы. Используется jQuery 4.0.0.

index.html
HTML
<div id="target"></div>
<pre id="result"></pre>
main.js
JavaScript
const nodes = $.parseHTML('Текст <strong>Важно</strong><span>Дополнение</span>')
const important = $(nodes).filter('strong')
$('#target').append(important)
$('#result').text('Узлов: ' + nodes.length + ' | вставлено: ' + important.length)