代码之家  ›  专栏  ›  技术社区  ›  Bobby Jack

来自完整HTML文档的jQuery对象

  •  2
  • Bobby Jack  · 技术社区  · 14 年前

    是否可以将完整的HTML文档解析为完整的jQuery对象?当我尝试时,例如。

    var $tmp = $("<html><head><title>title</title></head><body><p id='test'>test</p></body></html>");
    console.log($tmp);
    

    我得到:

    [+] [title, p#test] []
    

    i、 一个数组,将头部的所有子元素与身体的所有子元素组合在一起。是否不能保留结构,包括html、head和body元素?

    3 回复  |  直到 14 年前
        1
  •  1
  •   Jules    14 年前

    jquery去掉html和body,因为文档中只能有一个html和body。布莱恩的答案是你能得到的最接近的,但只有在非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));
    
        2
  •  0
  •   user113716    14 年前

    我认为jQuery使用浏览器的本机 innerHTML 在这种情况下创建元素。因此,有些浏览器允许,有些则不允许。我认为它可以在Firefox中工作,但IE不行。

    也许你可以试着用本地的 document.createElement() . 不确定它是否能起作用。

        3
  •  0
  •   Brian Flanagan    14 年前

    一种技巧是用字符串替换“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));
    

    我不确定我真的 喜欢 但这个想法。。。