jQuery获取包含容器本身的容器的html

时间:2011-06-23 19:12:02

标签: javascript jquery

我如何获得'#container'上的html,包括'#container',而不仅仅是内部的内容。

<div id="container">
 <div id="one">test 1 </div>
 <div id="two">test 2 </div>
 <div id="three">test 3 </div>
 <div id="four">test 4 </div>
</div>

我有这个获取#container中的html。它不包括#container元素本身。这就是我要做的事情

var x = $('#container').html();
$('#save').val(x);

检查http://jsfiddle.net/rzfPP/58/

10 个答案:

答案 0 :(得分:149)

如果您将容器包装在虚拟P标记中,您也将获得容器HTML。

您需要做的就是

var x = $('#container').wrap('<p/>').parent().html();

查看http://jsfiddle.net/rzfPP/68/

上的工作示例

完成unwrap() <p>标记后,您可以添加

$('#container').unwrap();

答案 1 :(得分:118)

var x = $('#container').get(0).outerHTML;

更新:自FireFox 11(2012年3月)起,Firefox现在支持此功能

正如其他人所指出的,这在FireFox中不起作用。如果你需要它在FireFox中工作,那么你可能想看一下这个问题的答案: In jQuery, are there any function that similar to html() or text() but return the whole content of matched component?

答案 2 :(得分:65)

var x = $('#container')[0].outerHTML;

答案 3 :(得分:53)

我喜欢用这个;

$('#container').prop('outerHTML');

答案 4 :(得分:12)

$('#container').clone().wrapAll("<div/>").parent().html();

更新:outerHTML现在可以在firefox上运行,所以请使用其他答案,除非你需要支持非常旧版本的firefox

答案 5 :(得分:1)

$.fn.outerHtml = function()
{
if (this.length)
{
    var div = $('<div style="display:none"></div>');
    var clone =
    $(this[0].cloneNode(false)).html(this.html()).appendTo(div);
    var outer = div.html();
    div.remove();
    return outer;
}
else
    return null;
};

来自http://forum.jquery.com/topic/jquery-getting-html-and-the-container-element-12-1-2010

答案 6 :(得分:1)

Oldie,但是Goldie ......

由于用户要求jQuery,我将保持简单:

var html = $('#container').clone();
console.log(html);

Fiddle here.

答案 7 :(得分:0)

var x = $($('div').html($('#container').clone())).html();

答案 8 :(得分:0)

Firefox doesn't support outerHTML,因此您需要define a function来帮助支持它:

function outerHTML(node) {
    return node.outerHTML || (
        function(n) {
            var div = document.createElement('div');
            div.appendChild( n.cloneNode(true) );
            var h = div.innerHTML;
            div = null;
            return h;
        }
    )(node);
}

然后,您可以使用outerHTML:

var x = outerHTML($('#container').get(0));
$('#save').val(x);

答案 9 :(得分:-2)

带有示例的简单解决方案:

<div id="id_div">
  <p>content<p>
</div>

将此DIV移动到id =“other_div_id”

的其他DIV
$('#other_div_id').prepend( $('#id_div') );

完成