Ответ 1
Создайте временный элемент, затем clone()
и append()
:
$('<div>').append($('#xxx').clone()).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, но это не очень хорошая идея.
Создайте временный элемент, затем clone()
и append()
:
$('<div>').append($('#xxx').clone()).html();
Просто используйте стандартные функции DOM:
$('#xxx')[0].outerHTML
outerHTML
хорошо поддерживается - проверьте Mozilla или caniuse.
Нет решения для братьев и сестер:
var x = $('#xxx').parent().html();
alert(x);
Универсальное решение:
// no cloning necessary
var x = $('#xxx').wrapAll('<div>').parent().html();
alert(x);
Заклинание здесь: http://jsfiddle.net/ezmilhouse/Mv76a/
Если вы не хотите добавлять оболочку, вы можете просто добавить код вручную, так как вы знаете идентификатор, на который вы нацеливаете:
var myID = "xxx";
var newCode = "<div id='"+myID+"'>"+$("#"+myID).html()+"</div>";