正确的方法将html解析为jQuery对象
我想将一个html字符串解析为jQuery对象,然后按ID查找一个元素。
我尝试了3种方法,但只有最后的方法。 我不知道为什么其他人不行?
var 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).find('#main').length);
以下是示例: http : //jsfiddle.net/nbyofkam/2/
它记录在案 :
传递复杂的HTML时,某些浏览器可能无法生成完全复制所提供的HTML源的DOM。 如上所述,jQuery使用浏览器的.innerHTML属性来解析传递的HTML并将其插入到当前文档中。在此过程中,某些浏览器会过滤掉某些元素,例如
,
或
元素结果,插入的元素可能无法代表传递的原始字符串。
结果, $(html)
减少为"
" 。 您可以通过记录$(html)[0].outerHTML
。
所以你不能find
没有包装的情况下使用find
,这就是你所做的。
另一种方法 –
var myTestDiv = document.createElement('div'); var mystr = ''; myTestDiv.innerHTML = mystr; console.log(myTestDiv.querySelector('div#main'));