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

Могу ли я использовать селектора jQuery для строки HTML, которая не привязана к DOM?

Итак, если у меня есть переменная типа

var ht = "<body><p>Paragraph Here</p></body>"

Если он был прикреплен к DOM, я мог бы просто сделать это, чтобы получить текст

$('p').text(); 

Но могу ли я сделать такой же выбор только по переменной, которая еще не привязана к dom?

4b9b3361

Ответ 1

Объект jQuery возьмет HTML и внесет его в структуру DOM для дальнейшего запроса, вы можете передать его непосредственно для создания объекта или использовать его в качестве контекста, если хотите просто запросить его.

Изменить: По какой-то причине кажется необходимым обернуть его в DIV, если он уже не находится внутри одного в этом примере. Дополнительную информацию см. В документации объекта jQuery в этом методе.

См. тестовую структуру для системы по адресу: http://jsfiddle.net/hUMqU/

var ht = "<body><p>Paragraph Here</p></body>";
$('<div>' + ht + '</div>').find('p').text();

или как контекст:

var ht = "<body><p>Paragraph Here</p></body>";
$('p', '<div>' + ht + '</div>').text();

Ответ 2

Нет тайны. Выбор

$('p')  

выбирает p элементы документа, подразумеваемый контекст.

Но элементы p в:

var ht = "<body><p>Paragraph Here</p></body>";  

не прикреплены к документу (DOM), поэтому он ОК, если они не выбраны.

К счастью, функция $() имеет второй аргумент, контекст, который должен использоваться здесь, например:

$('p', $(ht).context) 

Ответ 3

Просто оберните свою HTML-строку в объект jQuery, а затем вы можете запускать селектора jQuery:

var htmlString = "<body><p>Paragraph Here</p></body>";
var elements = $(htmlString);

var p = elements.filter('p').text();
console.log(p);
//=> Paragraph Here

Рабочая демонстрация здесь.