jQuery: so ändern Sie die tag-Namen?
jQuery: so ändern Sie die tag-Namen?
Beispiel:
<tr>
$1
</tr>
Brauche ich
<div>
$1
</div>
Ja, ich kann
- Erstellen DOM-element <div>
- Kopieren tr Inhalt an div
- Entfernen tr von dom
Aber kann ich es direkt?
PS:
$(tr).get(0).tagName = "div";
Ergebnisse in DOMException
.
InformationsquelleAutor der Frage puchu | 2010-08-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie ersetzen Sie alle HTML-markup mithilfe von jQuery
.replaceWith()
Methode.Beispiel: http://jsfiddle.net/JHmaV/
Ref.: .replaceWith
Wenn Sie möchten, um die vorhandene markup, Sie könnte verwenden Sie code wie diesen:
InformationsquelleAutor der Antwort jAndy
Nein, es ist nicht möglich, laut der W3C-Spezifikation: "tagName vom Typ DOMString, readonly"
http://www.w3.org/TR/DOM-Level-2-Core/core.html
InformationsquelleAutor der Antwort ggarber
Wo der DOM renameNode () - Methode?
Heute (2014) kein browser verstehen die neue DOM3 renameNode Methode (siehe auch W3C)
überprüfen Sie, wenn Sie in Ihrem bowser: http://jsfiddle.net/k2jSm/1/
So, in einer DOM Lösung ist hässlich und ich nicht verstehen warum (??) jQuery nicht implementiert einen workaround?
pure DOM-Algorithmus
createElement(new_name)
replaceChild()
ist so etwas wie dieses,
... warten, prüfen und jsfiddle ...
jQuery-Algorithmus
@Ilpoldo Algorithmus ist ein guter Startpunkt,
Als andere kommentiert, es muss ein Attribut kopieren ... warten generic ...
spezifisch für
class
Erhaltung der Attributsiehe http://jsfiddle.net/cDgpS/Siehe auch https://stackoverflow.com/a/9468280/287948
InformationsquelleAutor der Antwort
Lösungen oben wischen Sie das vorhandene element und neu erstellen von Grund auf, zerstören jedes Ereignis Bindungen, die Kinder in den Prozess.
kurze Antwort: (verliert 's Attribute)
längere Antwort: kopiert (in 's Attribute)
fiddle mit verschachtelten Bindungen
Es wäre cool, kopieren, Bindungen gleichzeitig, aber immer aktuelle Bindungen hat bei mir nicht funktioniert.
InformationsquelleAutor der Antwort ericP
Zur Erhaltung der interne Inhalt des Tags, die Sie verwenden können, die accessor -
.html()
in Verbindung mit.replaceWith()
Gabel-Beispiel: http://jsfiddle.net/WVb2Q/1/
InformationsquelleAutor der Antwort ilpoldo
Könnten Sie gehen ein wenig basic. Für mich funktioniert.
InformationsquelleAutor der Antwort Cory
Ersetzen Sie den internen Inhalt mehrere - tags, die jeweils mit Ihren eigenen original-content, die Sie haben zu verwenden
.replaceWith()
und.html()
anders:http://jsfiddle.net/kcrca/VYxxG/
InformationsquelleAutor der Antwort user856027
JS zum ändern der tag-name
Verwandte Geige ist in diesem link
InformationsquelleAutor der Antwort illusionist
Einfach die änderung der property-Werte werden es nicht tun (wie schon andere gesagt haben, einige
HTMLElement
Eigenschaften sind schreibgeschützt; auch einige halten prototypal Kontext, um primitive Elemente). Die nächste Sache, die Sie bekommen können, um die Nachahmung der DOM-API ist, zu imitieren, auch der Prozess der prototypal inheritance in JavaScript.'Einstellung' auf ein Objekt dem Prototyp über
__proto__
ist in der Regel verpönt. Auch könnte man prüfen, warum Sie denken, Sie brauchen, um doppelte, die gesamte DOM-element in den ersten Platz. Aber hier geht:Alle DOM-Elemente, die auf diese Weise funktionieren. Zum Beispiel:
<div></div>
wird produziert, indemHTMLDivElement
die sich
HTMLElement
,der wiederum erstreckt sich
Element
,der wiederum erstreckt sich
Object
.InformationsquelleAutor der Antwort Benny
Seit
replaceWith()
hat nicht funktioniert für mich auf einer element-basis (vielleicht, weil ich es inmap()
), hab ich es durch das erstellen eines neuen Elements und das kopieren der Attribute wie erforderlich.InformationsquelleAutor der Antwort WoodrowShigeru
Nehmen Sie ihn durch das Wort
Genommen, die Frage mit dem Zusatz "so ändern Sie tag-name?" Ich würde vorschlagen, diese Lösung:
Ob es Sinn macht oder nicht, entschieden werden, von Fall zu Fall.
Meinem Beispiel wird "umbenennen" werden alle a-Tags mit hyperlinks für SMS-mit span-tags. Beibehaltung aller Attribute und Inhalt:
Als es macht keinen Sinn, um ein span-tag mit einem href-Attribut Entferne ich das auch.
Auf diese Weise ist kugelsicher und mit allen Browsern kompatibel, unterstützt von jquery.
Es gibt andere Möglichkeiten, die Menschen versuchen, Sie zu kopieren alle Attribute auf das neue Element, diese sind aber nicht mit allen Browsern kompatibel.
Obwohl ich denke, es ist ziemlich teuer, es zu tun auf diese Weise.
InformationsquelleAutor der Antwort Hannes Morgenstern
Jquery-plugin, um "tagName" bearbeitbar :
Finden Sie unter : http://jsfiddle.net/03gcnx9v/3/
InformationsquelleAutor der Antwort cedrik
Noch ein weiteres Skript zum ändern der node-name
http://jsfiddle.net/rc296owo/5/
Es kopiert werden über die Attribute und innere html-Code in ein neues element und dann die alte ersetzen.
InformationsquelleAutor der Antwort Berty
Mit dieser Funktion können Sie
ES6
Beispielcode
InformationsquelleAutor der Antwort Sarath Ak
Inspiriert von ericP Antwort, formatiert und konvertiert jQuery-plugin:
Verwendung:
InformationsquelleAutor der Antwort Dmitriy Sintsov