815 Stimmen

Holt das äußere HTML des ausgewählten Elements

Ich versuche, die HTML eines ausgewählten Objekts mit jQuery zu erhalten. Ich bin mir bewusst, dass die .html() Funktion; das Problem ist, dass ich das HTML einschließlich des ausgewählten Objekts benötige (in diesem Fall eine Tabellenzeile, in der .html() gibt nur die Zellen innerhalb der Zeile zurück).

Ich habe herum gesucht und fand ein paar sehr "hackish" Art Methoden der Klonen eines Objekts, fügen Sie es zu einem neu erstellten div, etc, etc, aber dies scheint wirklich schmutzig. Gibt es einen besseren Weg, oder bietet die neue Version von jQuery (1.4.2) irgendeine Art von outerHtml Funktionalität?

91 Stimmen

Es ist ungeheuerlich, dass jQuery nicht über Mittel verfügt, um so etwas zu tun. Ich brauche das auch.

9 Stimmen

Ich habe eine Funktionsanfrage mit einem Verweis auf diesen Thread gestellt, und die erste Reaktion war positiv. bugs.jquery.com/ticket/8142

0 Stimmen

Oh, wow. Also etwas, das ich bemerkt, dass nicht in jQuery war, könnte tatsächlich machen es in eine zukünftige jQuery von diesem StackOverflow Post. Ich hoffe es. Das wäre cool, und die .outerHTML (oder so ähnlich) Funktion ist einfach nur praktisch.

0voto

fishy Punkte 11

Ich bin darauf gestoßen, als ich nach einer Antwort auf mein Problem suchte, das darin bestand, dass ich versuchte, eine Tabellenzeile zu entfernen und sie dann am unteren Ende der Tabelle wieder hinzuzufügen (weil ich Datenzeilen dynamisch erstellte, aber eine Zeile vom Typ "Neuer Datensatz hinzufügen" am unteren Ende anzeigen wollte).

Ich hatte das gleiche Problem, dass es die innerHtml zurückgegeben wurde, so fehlte die TR-Tags, die die ID dieser Zeile gehalten und bedeutete, dass es unmöglich war, den Vorgang zu wiederholen.

Die Antwort, die ich fand, war, dass die jquery remove() Funktion gibt das Element, das sie entfernt, als Objekt zurück. Um also eine Zeile zu entfernen und wieder hinzuzufügen, war es so einfach wie folgt...

var a = $("#trRowToRemove").remove();            
$('#tblMyTable').append(a);  

Wenn Sie das Objekt nicht entfernen, sondern es an eine andere Stelle kopieren wollen, verwenden Sie die clone() stattdessen die Funktion.

0voto

Sky Yip Punkte 991

JQuery-Plugin als Kurzform, um direkt das gesamte HTML-Element zu erhalten:

jQuery.fn.outerHTML = function () {
    return jQuery('<div />').append(this.eq(0).clone()).html();
};

Und verwenden Sie es so: $(".element").outerHTML();

-2voto

vapcguy Punkte 6445
$("#myNode").parent(x).html(); 

Wobei 'x' die Nummer des Knotens ist, beginnend mit 0 als erster, sollte den richtigen Knoten erhalten, wenn Sie versuchen, einen bestimmten zu erhalten. Wenn Sie Kindknoten haben, sollten Sie wirklich eine ID auf den gewünschten Knoten setzen, um nur diesen einen zu finden. Mit dieser Methode und ohne "x" hat es bei mir gut funktioniert.

1 Stimmen

Möchten Sie einen Kommentar hinterlassen, wenn Sie die Abstimmung ablehnen? Ich lasse den Code nach oben zum PARENT gehen und hole mir dann das HTML des Inhalts - und nicht nur eine .html() auf das angegebene Element. DAS FUNKTIONIERT und ich hätte gerne eine Erklärung, warum es nicht funktioniert.

-4voto

Zeeshan Punkte 98

Einfache Lösung.

var myself = $('#div').children().parent();

-12voto

brettkelly Punkte 26581
$("#myTable").parent().html();

Vielleicht verstehe ich Ihre Frage nicht richtig, aber damit wird die HTML des übergeordneten Elements des ausgewählten Elements abgerufen.

Ist es das, worauf Sie aus sind?

25 Stimmen

Eigentlich nicht, denn wenn dieser Elternteil andere Kinder hat, bekommt er auch diese html.

1 Stimmen

...was er sagte. Ich bin auf der Suche nach dem Element selbst, nicht es und alle seine Eltern andere Kinder. Wie kommt es, dass dies zwei Stimmen nach oben bekommt?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X