Javascript 将html解析为jQuery对象的正确方法
我想将一个html字符串解析为jQuery对象,然后按ID查找一个元素 我试过下面三种方法,但只有最后一种有效。我不知道为什么其他的不起作用Javascript 将html解析为jQuery对象的正确方法,javascript,jquery,Javascript,Jquery,我想将一个html字符串解析为jQuery对象,然后按ID查找一个元素 我试过下面三种方法,但只有最后一种有效。我不知道为什么其他的不起作用 var html = "<html><body><div id='main'></div></body></html>"; // Not work, return 0 console.log($(html).find('#main').length); // Not work, r
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);
var html=”“;
//不工作,返回0
log($(html).find('#main').length);
//不工作,返回0
log($($.parseHTML(html)).find('#main').length);
//工作,返回1
console.log($(“”).html(html).find('#main').length);
以下是示例:
它是:
在传递复杂的HTML时,某些浏览器可能无法生成完全复制所提供HTML源的DOM。如前所述,jQuery使用浏览器“s.innerHTML属性来解析传递的HTML并将其插入当前文档。在此过程中,一些浏览器会过滤掉某些元素,如
、
或
元素。因此,插入的元素可能无法代表传递的原始字符串
因此,$(html)
被缩减为“
。您可以通过记录$(html)[0].outerHTML
来验证这一点
因此,如果不包装它,就无法使用
查找
,这就是您要做的。另一种方法是-
var myTestDiv = document.createElement('div');
var mystr = '<div id="main"></div>';
myTestDiv.innerHTML = mystr;
console.log(myTestDiv.querySelector('div#main'));
var myTestDiv=document.createElement('div');
var mystr='';
myTestDiv.innerHTML=mystr;
log(myTestDiv.querySelector('div#main');
$(html)==
这就是为什么你不能使用.find()
来查找它。你也可以将字符串当作XML控制台.log($($.parseXML(html)).find('#main').length)
但是最好避免不必要的包装。我很困惑。。。在我看来,@YuryTarabanko在这里给出了正确的答案。有一个类似的问题,使用parseXML
代替pfparseHTML
有帮助。作为一种解决方法,有一些类似于findAll
的东西。