öffnendes Tag einschließlich Attribute - outerHTML ohne innerHTML

8

Ich möchte ein bestimmtes Tag-Element mit seinen Attributen aus dem DOM abrufen. Zum Beispiel von

%Vor%

Ich möchte <a href="#" class="class"> , optional mit einem schließenden </a> , entweder als String oder ein anderes Objekt erhalten. Meiner Meinung nach wäre dies vergleichbar mit dem Aufruf von .outerHTML ohne .innerHTML .

Schließlich muss ich einige andere Elemente über jQuery einbinden. Ich habe es versucht

%Vor%

aber .get() gibt das DOM-Element einschließlich seines Inhalts zurück. Auch

%Vor%

schlägt fehl, da elem.attributes eine NamedNodeMap zurückgibt, was nicht mit jQuerys attr() funktioniert und ich konnte es nicht konvertieren. Zugegeben, dass die obigen Beispiele nicht sehr sinnvoll sind, da sie auch die nicht länger eindeutige ID des Elements kopieren. Aber gibt es einen leichten Weg? Vielen Dank.

    
Richard Kiefer 07.03.2012, 15:25
quelle

2 Antworten

4
%Vor%
  • Vielleicht möchten Sie den Selektor so ändern, dass er dem gesuchten Element <a> besser entspricht.
  • clone() erstellt eine neue Kopie der übereinstimmenden Elemente und kopiert optional Event-Handler.
  • Ich habe attr verwendet, um die ID des Elements zu löschen, damit keine IDs dupliziert werden.
  • empty() entfernt alle untergeordneten Knoten (" innerHTML ").
josh3736 07.03.2012, 15:29
quelle
11

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

%Vor%

Da outerHTML das öffnende Tag enthält, gefolgt von einer Spiegelung dessen, was innerHTML enthält, können wir die outerHTML von 0 (der Anfang des öffnenden Tags) bis zu der Stelle, an der das innerHTML beginnt, substringieren ( Ende des öffnenden Tags), und da innerHTML eine Spiegelung von outerHTML ist, außer dem öffnenden Tag, bleibt nur das öffnende Tag übrig!

Dies funktioniert mit <br> -Tags, <meta> -Tags und anderen leeren Tags:

%Vor%

Da innerHTML in selbstschließenden Tags leer ist und indexOf('') immer 0 zurückgibt, prüft die obige Änderung auf das Vorhandensein von innerHTML first.

    
Aaron Gillion 06.01.2016 17:26
quelle