获取选定元素的外部HTML
我试图用jQuery获取选定对象的HTML。 我知道.html()
函数; 问题是我需要包含选定对象的HTML(在这种情况下为表格行,其中.html()
仅返回行内的单元格)。
我四处搜索,发现了一些克隆对象的“黑客”类型方法,将它添加到新创建的div等等,但这看起来很脏。 有没有更好的方法,还是新版本的jQuery(1.4.2)提供了任何类型的outerHtml
功能?
2014编辑:这个问题和这个答复是从2010年。当时,没有更好的解决方案被广泛使用。 现在,许多其他答案都比较好:例如Eric Hu,或Re Capcha。
这个网站似乎为您提供了一个解决方案:jQuery:outerHTML | Yelotofu
jQuery.fn.outerHTML = function(s) {
return s
? this.before(s).remove()
: jQuery("<p>").append(this.eq(0).clone()).html();
};
我相信目前(2012年5月1日),所有主流浏览器都支持outerHTML函数。 在我看来,这段代码就足够了。 我个人会选择记住这一点:
// Gives you the DOM element without the outside wrapper you want
$('.classSelector').html()
// Gives you the outside wrapper as well
$('.classSelector')[0].outerHTML
编辑 : element.outerHTML
基本支持统计
不需要为它生成一个函数。 只要这样做:
$('a').each(function(){
var s = $(this).clone().wrap('<p>').parent().html();
console.log(s);
});
(顺便说一句,您的浏览器的控制台会显示记录的内容。自2009年左右开始,大多数最新的浏览器都具有此功能。)
最终的魔力就是这样:
.clone().wrap('<p>').parent().html();
克隆意味着你实际上并不会干扰DOM。 没有它的情况下运行它,你会看到所有超链接之前/之后插入的p
标签(在这个例子中),这是不可取的。 所以,是的,使用.clone()
。
它的工作方式是,它需要每a
标签,在RAM使得它的克隆,带有包装p
标签,获取它的父(指p
标签),然后得到innerHTML
它的财产。
编辑 :采取建议,并更改为p
标签的div
标签,因为它不那么打字和工作原理相同。