Öffnendes Tag mit Attributen abrufen - outerHTML ohne innerHTML

Für zukünftige Googler gibt es eine Möglichkeit, dies ohne jQuery zu tun:

tag = elem.outerHTML.slice(0, elem.outerHTML.indexOf(elem.innerHTML));

Seit outerHTML enthält das Öffnungs-Tag gefolgt von einem Spiegel von was innerHTML enthält, können wir das outerHTML von 0 (dem Anfang des öffnenden Tags) bis zum Beginn des innerHTML (Ende des öffnenden Tags) substringen, und da innerHTML ein Spiegelbild von outerHTML ist, mit Ausnahme des öffnenden Tags, ist nur das öffnende Tag vorhanden links!

Dieser funktioniert mit <br> Tags, <meta> Tags und andere leere Tags:

tag = elem.innerHTML ? elem.outerHTML.slice(0,elem.outerHTML.indexOf(elem.innerHTML)) : elem.outerHTML;

Weil innerHTML in selbstschließenden Tags leer wäre und indexOf('') immer 0 zurückgibt, prüft die obige Änderung, ob innerHTML vorhanden ist zuerst.


var wrapper = $('.class').clone().attr('id','').empty();
  • Möglicherweise möchten Sie den Selektor so ändern, dass er genauer mit <a> übereinstimmt Element, nach dem Sie suchen.
  • clone() erstellt eine neue Kopie der übereinstimmenden Elemente und kopiert optional auch Event-Handler.
  • Ich habe attr verwendet um die ID des Elements zu löschen, damit wir keine IDs duplizieren.
  • empty() entfernt alle untergeordneten Knoten (die 'innerHTML ').

Hier ist meine Lösung:

opentag=elem.outerHTML.slice(0, elem.outerHTML.length-elem.innerHTML.length-elem.tagName.length-3);

Ich nehme an, dass das schließende Tag folgende Form hat:"</"+elem.tagName+">" .