有没有办法获得.html()的父级?

时间:2011-10-26 08:33:48

标签: jquery html

  

可能重复:
  Get selected element's outer HTML

我有这段代码:

<html>
    <head></head>
    <body></body>
</html>

$('html').html()我只能得到:

    <head></head>
    <body></body>

我怎样才能得到整个代码?我的意思是,还有我使用.html() ...

的元素的父元素

5 个答案:

答案 0 :(得分:2)

试试这个jQuery扩展:

jQuery.fn.outerHTML = function(s) {
    return (s) ? this.before(s).remove() : jQuery("<p>").append(this.eq(0).clone()).html();
}

您可以这样称呼它:

$("html").outerHTML();

积分转到this page

答案 1 :(得分:1)

有点黑客:

$('<div />').html($('html').clone()).html();

在页面上有大量HTML的旧浏览器中可能会很慢,因为它必须克隆整个内容。

编辑:如果你想要一个jQuery函数,只需写一个:

$.fn.outerHtml = function (a) {
    if (a) {
        a = $(a).insertBefore(this);
        this.remove();
        return a;
    }
    return $('<div />').html($('html').clone()).html();
};

然后拨打$('html').outerHtml()

答案 2 :(得分:0)

我认为有很多方法,例如。 jQuery("html")[0].outerHTML;jQuery("html").attr("outerHTML");

编辑:这不是跨浏览器,我忘记了。 Firefox不支持此功能。有(克隆)黑客为此。

修改:有关FF支持,请参阅How do I do OuterHTML in firefox?

答案 3 :(得分:0)

这个怎么样:

$('<div>').append($('html').clone()).remove().html();

答案 4 :(得分:0)

无论如何,如果您尝试获取<html>并且它应该是正确文档中唯一的<html>标记 - 为什么不手动将其添加到innerHTML?