Jaka jest różnica między $('this')[0].nodeName
i $('this')[0].tagName
?
javascript
dom
Kdniazi
źródło
źródło
Odpowiedzi:
tagName
Nieruchomość jest przeznaczona specjalnie dla węzłów elementów (typ 1 węzły), aby uzyskać typ elementu .Istnieje również kilka innych typów węzłów (komentarz, atrybut, tekst itp.). Aby uzyskać nazwę dowolnego z różnych typów węzłów, możesz użyć
nodeName
właściwości .Używając w
nodeName
odniesieniu do węzła elementu , otrzymasz jego nazwę tagu, więc możesz naprawdę użyć obu, ale uzyskasz lepszą spójność między przeglądarkami podczas używanianodeName
.źródło
To całkiem dobre wyjaśnienie różnicy między nimi.
Dodany tekst z artykułu:
źródło
Przeczytaj o tych właściwościach w specyfikacji DOM Core.
nodeName
to właściwość zdefiniowana w interfejsie węzłahttp://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-F68D095
tagName
to właściwość zdefiniowana w interfejsie Elementhttp://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-104682815
btw interfejs Node jest implementowany przez każdy węzeł w drzewie DOM (w tym
document
sam obiekt). Interfejs Element jest implementowany tylko przez te węzły w drzewie DOM, które reprezentują elementy w dokumencie HTML (węzły znodeType
=== 1).źródło
A oto co dzieje się w Firefoksie 33 i Chrome 38:
HTML:
Js:
Więc:
nodeType
do uzyskania typu węzła:nodeName
przerwy dlanodeType === 1
tagName
donodeType === 1
źródło
nodeName
przerwa nanodeType === 1
”?