2010-05-06 8 views
13

Ich habe $("#parent").html() verwendet, um die innere HTML von #parent zu bekommen, aber wie bekomme ich die HTML der Eltern selbst?Get Raw HTML des Knotens in JQuery

Der Anwendungsfall ist, packe ich einen Eingangsknoten wie folgt aus:

var field = $('input'); 

Ich möchte den rohen html dieses Knotens (<input type='text'>) mit so etwas wie field.html() bekommen zu können, aber das gibt leer . Ist das möglich?

Antwort

7

Es ist etwas umständlich zu tun:

var field = $("input"); // assuming there is but 1 
var html = field.wrap("<div>").parent().html(); 
field.unwrap(); 

html() zu innerHTML analog ist. Es gibt keine "Standard" outerHTML Methode. Das obige umschließt das gewünschte Element in einem temporären Element und erhält die innerHTML davon.

2
:

jQuery.fn.outerHTML = function(s) { 
    return (s) 
    ? this.before(s).remove() 
    : jQuery("<p>").append(this.eq(0).clone()).html(); 
} 

so können Sie dies tun

Sie verwenden können:

var html = $('#parent')[0]; 

dass der #parent Knoten erhalten wird, dann den Code des ersten Knotens zurückkehren zurück (das ist der einzige in diesem Fall sein wird).

7

Diese Frage ist sehr alt, aber es ist jetzt eine einfache Lösung:

var html = $('input').prop('outerHTML'); 

Beispiel String-Wert von html:
< input type = "input" >

Fiddle mit ihm :
https://jsfiddle.net/u0a1zkL1/3

Und , funktioniert die in Optimaes Kommentar erwähnte Technik auch:

var html = $('input')[0].outerHTML; 
+1

Für jeden, der auf das Element abzielt, das ein Ereignis ausgelöst hat, funktioniert 'var html = event.target.outerHTML' ebenfalls. – Optimae