Qual é a diferença entre $('this')[0].nodeName
e $('this')[0].tagName
?
javascript
dom
Kdniazi
fonte
fonte
Respostas:
A
tagName
propriedade destina-se especificamente aos nós do elemento ( nós do tipo 1) para obter o tipo de elemento .Existem vários outros tipos de nós também (comentário, atributo, texto etc.). Para obter o nome de qualquer um dos vários tipos de nós, você pode usar a
nodeName
propriedade .Ao usar
nodeName
contra um nó de elemento , você obterá o nome da tag, para que qualquer um possa realmente ser usado, embora você obtenha melhor consistência entre os navegadores ao usá-lonodeName
.fonte
Esta é uma boa explicação da diferença entre os dois.
Texto adicionado do artigo:
fonte
Leia sobre essas propriedades na especificação DOM Core.
nodeName
é uma propriedade definida na interface do Nóhttp://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-F68D095
tagName
é uma propriedade definida na interface do elementohttp://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-104682815
Entre a interface do nó é implementada por todos os nós na árvore do DOM (incluindo o
document
próprio objeto). A interface Element é implementada apenas pelos nós na árvore DOM que representam elementos em um documento HTML (nós comnodeType
=== 1).fonte
E é isso que acontece no Firefox 33 e Chrome 38:
HTML:
Js:
Assim:
nodeType
para obter o tipo de nó:nodeName
interrupções paranodeType === 1
tagName
paranodeType === 1
fonte
nodeName
quebrar paranodeType === 1
"?