jQuery: buitenste html()

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

outerHTMLwordt 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>";

Other episodes