stel je voor wat we hebben, zoiets als dit:
<div id="xxx"><p>Hello World</p></div>
als we de .html-functie op deze manier aanroepen:
$("#xxx").html();
we krijgen:
<p>Hello World</p>
Maar ik heb nodig:
<div id="xxx"><p>Hello World</p></div>
Dus, wat moet ik doen? Ik denk om nog een wrapper toe te voegen rond #xxx, maar dit is geen goed idee.
Antwoord 1, autoriteit 100%
Maak een tijdelijk element, dan clone()
en append()
:
$('<div>').append($('#xxx').clone()).html();
Antwoord 2, autoriteit 92%
Gebruik gewoon de standaard DOM-functionaliteit:
$('#xxx')[0].outerHTML
outerHTML
wordt goed ondersteund – verifieer op Mozillaof caniuse.
Antwoord 3, autoriteit 36%
Geen oplossing voor broers en zussen:
var x = $('#xxx').parent().html();
alert(x);
Universele oplossing:
// no cloning necessary
var x = $('#xxx').wrapAll('<div>').parent().html();
alert(x);
Fiddle hier: http://jsfiddle.net/ezmilhouse/Mv76a/
Antwoord 4
Als u geen wrapper wilt toevoegen, kunt u de code gewoon handmatig toevoegen, aangezien u de ID kent die u target:
var myID = "xxx";
var newCode = "<div id='"+myID+"'>"+$("#"+myID).html()+"</div>";