我可以在没有附加到DOM的HTML字符串上使用jQuery选择器吗?

所以,如果我有一个像变量

var ht = "

Paragraph Here

"

如果它附加到DOM我可以这样做以获取文本

 $('p').text(); 

但是我可以对尚未附加到dom的变量进行相同的选择吗?

jQuery对象将获取HTML并将其转换为DOM结构以进行进一步查询,您可以直接传递它以创建对象,或者如果您只是想查询它,则将其用作上下文。

编辑:出于某种原因,似乎有必要将其包装在DIV中,如果在此示例中尚未包含在DIV中。 有关详细信息,请参阅有关此方法的jQuery对象文档 。

请参阅系统的测试框架: http //jsfiddle.net/hUMqU/

 var ht = "

Paragraph Here

"; $('
' + ht + '
').find('p').text();

或作为背景:

 var ht = "

Paragraph Here

"; $('p', '
' + ht + '
').text();

没有神秘感。 选择

 $('p') 

选择文档的p元素, 隐含的上下文

但是p元素在:

 var ht = "

Paragraph Here

";

没有附加到文档(DOM),所以如果没有选择它们就没问题。

幸运的是, $()函数有一个第二个参数,即上下文 ,必须在这里使用,如:

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

只需将HTML String包装到jQuery对象中,然后就可以从那里运行jQuery选择器:

 var htmlString = "

Paragraph Here

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

在这里工作演示 。