JQuery: внешний html()

Возможный дубликат:
Получить выбранные элементы внешнего HTML

представьте, что у нас есть что-то вроде этого:

<div id="xxx"><p>Hello World</p></div>

если мы вызываем функцию .html таким образом:

$("#xxx").html();

получим:

<p>Hello World</p>

Но мне нужно получить:

<div id="xxx"><p>Hello World</p></div>

Итак, что мне нужно делать? Я думаю добавить еще одну обертку вокруг #xxx, но это не очень хорошая идея.

Ответ 1

Создайте временный элемент, затем clone() и append():

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

Ответ 2

Просто используйте стандартные функции DOM:

$('#xxx')[0].outerHTML

outerHTML хорошо поддерживается - проверьте Mozilla или caniuse.

Ответ 3

Нет решения для братьев и сестер:

var x = $('#xxx').parent().html();
alert(x);

Универсальное решение:

// no cloning necessary    
var x = $('#xxx').wrapAll('<div>').parent().html(); 
alert(x);

Заклинание здесь: http://jsfiddle.net/ezmilhouse/Mv76a/

Ответ 4

Если вы не хотите добавлять оболочку, вы можете просто добавить код вручную, так как вы знаете идентификатор, на который вы нацеливаете:

var myID = "xxx";

var newCode = "<div id='"+myID+"'>"+$("#"+myID).html()+"</div>";