无法使用jQuery解析HTML

Suk*_*aul 0 javascript jquery

我想使用jQuery解析主页HTML,如下所示.当我使用文档时它正在工作.但是在使用字符串时不起作用.

输出: null

var str = "<html><title>This is Title</title><body><p>This is a content</p><p class='test'>Test content</p></body></html>";
$str = $(document); // working
$str = $(str);      // not working
alert($str.find(".test").html());
Run Code Online (Sandbox Code Playgroud)

另一种方法(也失败):

输出: null

var str = "<html><title>This is Title</title><body><p>This is a content</p><p class='test'>Test content</p></body></html>";
alert($('.test',str).html());
Run Code Online (Sandbox Code Playgroud)

我得到的字符串也不能解析为XML,因为它不是有效的XHTML.

T.J*_*der 7

jQuery的可以将HTML片段插入DOM元素的树,但它只做与内容元素,不html,title,head,等,只有你的东西就放里面 body.所以这可能会导致一些麻烦.

find函数查找与给定选择器匹配的后代元素.因此,即使jQuery实例中的任何顶级元素与选择器匹配,也无法找到它们find.例如:

$('<p class="foo">foo</p>').find('.foo').length; // 0 -- none found
Run Code Online (Sandbox Code Playgroud)

...因为匹配元素不是后代.要查找匹配的顶级元素,请使用filter:

var str = "<p>This is a content</p><p class='test'>Test content</p>";
$(str).find('.test').length; // 0 -- no *descendants* found that match
$(str).filter('.test').length; // 1 -- there was one top-level element that matched
Run Code Online (Sandbox Code Playgroud)

另一种方法是把所有的元素在一个容器,像一个div,使用前find:

var str = "<div><p>This is a content</p><p class='test'>Test content</p></div>";
$(str).find('.test').length; // 1 -- it was found
Run Code Online (Sandbox Code Playgroud)