正确的方法解析html到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); 

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


记录如下:

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

因此, $(html)被缩减为"<div id="main"></div>" 。 你可以通过记录$(html)[0].outerHTML

所以你不能使用find来包装它,这就是你所做的。


另一种方法来做到这一点 -

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

console.log(myTestDiv.querySelector('div#main'));
链接地址: http://www.djcxy.com/p/74093.html

上一篇: The right way parse html to jQuery object

下一篇: How to check if a string contain specific words