¿Cuál es la diferencia entre $('this')[0].nodeName
y $('this')[0].tagName
?
javascript
dom
Kdniazi
fuente
fuente
Respuestas:
La
tagName
propiedad está destinada específicamente a los nodos de elementos ( nodos de tipo 1) para obtener el tipo de elemento .También hay varios otros tipos de nodos (comentario, atributo, texto, etc.). Para obtener el nombre de cualquiera de los diversos tipos de nodos, puede utilizar la
nodeName
propiedad .Cuando se usa
nodeName
contra un nodo de elemento , obtendrá su nombre de etiqueta, por lo que cualquiera podría usarse, aunque obtendrá una mejor consistencia entre los navegadores cuando lo usenodeName
.fuente
Esta es una muy buena explicación de la diferencia entre los dos.
Texto agregado del artículo:
fuente
Lea sobre esas propiedades en la especificación DOM Core.
nodeName
es una propiedad definida en la interfaz del Nodohttp://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-F68D095
tagName
es una propiedad definida en la interfaz de Elementhttp://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-104682815
por cierto, la interfaz de nodo es implementada por cada nodo en el árbol DOM (incluido el
document
objeto mismo). La interfaz del elemento se implementa solo por aquellos nodos en el árbol DOM que representan elementos en un documento HTML (nodos connodeType
=== 1).fuente
Y esto es lo que sucede en Firefox 33 y Chrome 38:
HTML:
Js:
Entonces:
nodeType
para obtener el tipo de nodo:nodeName
saltos paranodeType === 1
tagName
paranodeType === 1
fuente
nodeName
rompe paranodeType === 1
"?