是否可以将完整的HTML文档解析为完整的jQuery对象?当我尝试时,例如
var $tmp = $("<html><head><title>title</title></head><body><p id='test'>test</p></body></html>");
console.log($tmp);
我明白了:
[+] [title, p#test] []
即。一个阵列,将所有头部的孩子与所有身体的所有孩子组合在一起。是不是可以保留结构,包括html,head和body元素?
答案 0 :(得分:1)
jquery剥离html和body,因为文档中只能有一个html和body。 Brian的答案是你可以得到的最接近的答案,但仅限于非IE浏览器,因为IE不解析非html标签。
例如:
var test = "<test>This is it</test>";
alert($(test).html()); // display This is it in non IE browser (working in 8-9?).
编辑: 如何用div class = html / body替换html和body?
var test = "<html><body><div>this is a test</div></body></html>";
test = test.replace(/(\/body|\/html)/i, "\/div")
.replace(/html/i, "div class='html'")
.replace(/body/i, "div class='body'");
console.log($(test));
答案 1 :(得分:0)
我认为jQuery使用浏览器的原生innerHTML
来创建那种情况下的元素。因此,某些浏览器允许它,而其他浏览器则不允许。我认为它适用于Firefox,但不适用于IE。
也许您可以尝试使用原生document.createElement()
将它拼凑在一起。不确定它是否会起作用。
答案 2 :(得分:0)
一种破解方法是将'html'节点用“html”这个词替换为字符串。
var tmp = '<html><head><title>title</title></head><body><p id="test">test</p></body></html>';
tmp = tmp.replace(/html/g, 'html1');
console.log($(tmp));
我不确定我真的喜欢这个想法虽然......