获取选定元素的外部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基本支持统计

  • Firefox(Gecko):11 ....发布2012-03-13
  • Chrome:0.2 ...............发布2008-09-02
  • Internet Explorer 4.0 ...发布于1997年
  • Opera 7 ......................发布2003-01-28
  • Safari 1.3 ...................发布2006-01-12

  • 不需要为它生成一个函数。 只要这样做:

    $('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标签,因为它不那么打字和工作原理相同。

    链接地址: http://www.djcxy.com/p/46351.html

    上一篇: Get selected element's outer HTML

    下一篇: Convert Object to JSON string