关于javascript:正确的将HTML解析为jquery对象的方法

The right way parse html to jQuery object

我想将HTML字符串解析为jquery对象,然后按ID查找元素。

我试过三种方法,但只有最后一种。我不知道其他人为什么不工作?

1
2
3
4
5
6
7
8
var html ="<html><body></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);

这是样品:http://jsfidle.net/nbyofkam/2/


记录如下:

When passing in complex HTML, some browsers may not generate a DOM that exactly replicates the HTML source provided. As mentioned, jQuery uses the browser"s .innerHTML property to parse the passed HTML and insert it into the current document. During this process, some browsers filter out certain elements such as , , or elements. As a result, the elements inserted may not be representative of the original string passed.

因此,$(html)减少为""。您可以通过登录$(html)[0].outerHTML来验证这一点。

所以你不能在没有包装的情况下使用find,这就是你要做的。


另一种方法-

1
2
3
4
5
var myTestDiv = document.createElement('div');
var mystr = '';
myTestDiv.innerHTML = mystr;

console.log(myTestDiv.querySelector('div#main'));