Was ist der Unterschied zwischen $('this')[0].nodeName
und $('this')[0].tagName
?
javascript
dom
Kdniazi
quelle
quelle
Antworten:
Die
tagName
Eigenschaft ist speziell für Elementknoten ( Knoten vom Typ 1) gedacht , um den Elementtyp abzurufen .Es gibt auch verschiedene andere Knotentypen (Kommentar, Attribut, Text usw.). Um den Namen eines der verschiedenen Knotentypen abzurufen, können Sie die
nodeName
Eigenschaft verwenden .Bei Verwendung
nodeName
für einen Elementknoten erhalten Sie dessen Tag-Namen, sodass beide wirklich verwendet werden können, obwohl Sie bei der Verwendung eine bessere Konsistenz zwischen den Browsern erzielennodeName
.quelle
Dies ist eine ziemlich gute Erklärung für den Unterschied zwischen den beiden.
Text aus dem Artikel hinzugefügt:
quelle
Weitere Informationen zu diesen Eigenschaften finden Sie in der DOM Core-Spezifikation.
nodeName
ist eine Eigenschaft, die in der Knotenschnittstellehttp://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-F68D095 definiert ist
tagName
ist eine Eigenschaft, die in der Elementschnittstellehttp://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-104682815 definiert ist
Übrigens wird die Knotenschnittstelle von jedem Knoten im DOM-Baum (einschließlich des
document
Objekts selbst) implementiert . Die Elementschnittstelle wird nur von den Knoten im DOM-Baum implementiert, die Elemente in einem HTML-Dokument darstellen (Knoten mitnodeType
=== 1).quelle
Und genau das passiert in Firefox 33 und Chrome 38:
HTML:
Js:
So:
nodeType
, um den Knotentyp abzurufen:nodeName
Pausen fürnodeType === 1
tagName
fürnodeType === 1
quelle
nodeName
brechen fürnodeType === 1
"?