2011-10-26 145 views
0

可能重复:
Get selected element's outer HTML有没有办法让父母的.html()?

我有这样的代码:

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

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

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

我怎样才能得到整个代码?我的意思是,我也使用元素的父母.html() ...

+0

一方面,从技术的角度来看,这似乎是一个有趣的问题,但另一方面:为什么要用''来做这个?对于我见过的95%的网页,您只需说出“”+ $(“html”)。html()+“”'。 – nnnnnn

回答

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()

0

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

编辑:这不是跨浏览器,我忘记了。 Firefox不支持这一点。有(克隆)黑客的。

编辑:有关FF支持,请参见How do I do OuterHTML in firefox?

+0

'outerHTML'是仅限IE的。 – BoltClock

0

这个怎么样:

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

无论如何,如果你正在试图获得<html>,它应该是一个正确的文档中的唯一<html>标签 - 为什么不将它添加手动给它的innerHTML?

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