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

eto*_*bot 23 jquery

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

var ht = "<body><p>Paragraph Here</p></body>"
Run Code Online (Sandbox Code Playgroud)

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

$('p').text(); 
Run Code Online (Sandbox Code Playgroud)

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

Orb*_*ing 20

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

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

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

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

或作为背景:

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


Jua*_*nus 14

没有神秘感.选择

$('p')  
Run Code Online (Sandbox Code Playgroud)

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

但是p元素在:

var ht = "<body><p>Paragraph Here</p></body>";  
Run Code Online (Sandbox Code Playgroud)

未附加到文档(DOM),因此如果未选中它们就可以.

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

$('p', $(ht).context) 
Run Code Online (Sandbox Code Playgroud)

  • `$('p',$(ht).context)`是正确的 (3认同)