正确的方法将html解析为jQuery对象

and*_*dyf 9 javascript jquery

我想将一个html字符串解析为jQuery对象,然后按ID查找一个元素.

我尝试了3种方法,但只有最后一种方法.我不知道为什么其他人不行?

var html = "<html><body><div id='main'></div></body></html>";

// Not work, return 0
console.log($(html).find('#main').length); 
// Not work, return 0
console.log($($.parseHTML(html)).find('#main').length); 
// Works, return 1
console.log($("<html/>").html(html).find('#main').length); 
Run Code Online (Sandbox Code Playgroud)

以下是示例:http: //jsfiddle.net/nbyofkam/2/

Den*_*ret 9

记录在案:

传递复杂的HTML时,某些浏览器可能无法生成完全复制所提供的HTML源的DOM.如所提到的,jQuery使用浏览器"S .innerHTML属性来解析通过HTML并将其插入到当前文档中.在此过程中,一些浏览器过滤掉某些内容,如 <html>,<title><head>元素,其结果是,元件可插入不能代表传递的原始字符串.

结果,$(html)减少到"<div id="main"></div>".您可以通过记录验证$(html)[0].outerHTML.

因此,如果find不包装它就不能使用,这就是你所做的.


小智 8

另一种方法 -

var myTestDiv = document.createElement('div');
var mystr = '<div id="main"></div>';
myTestDiv.innerHTML = mystr;

console.log(myTestDiv.querySelector('div#main'));
Run Code Online (Sandbox Code Playgroud)