В чем разница между $('this')[0].nodeName
и $('this')[0].tagName
?
javascript
dom
Kdniazi
источник
источник
Ответы:
tagName
Свойство предназначено специально для узлов элементов (типа 1 узлов) , чтобы получить тип элемента .Есть также несколько других типов узлов (комментарий, атрибут, текст и т. Д.). Чтобы получить имя любого из различных типов узлов, вы можете использовать
nodeName
свойство .При использовании в
nodeName
отношении узла элемента вы получите его имя тега, так что любой из них действительно может быть использован, хотя вы получите лучшую согласованность между браузерами при использованииnodeName
.источник
Это довольно хорошее объяснение разницы между ними.
Добавлен текст из статьи:
источник
Читайте об этих свойствах в спецификации DOM Core.
nodeName
это свойство, определенное в интерфейсе узлаhttp://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-F68D095
tagName
это свойство, определенное в интерфейсе элементаhttp://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-104682815
Кстати, интерфейс Node реализуется каждым узлом дерева DOM (включая сам
document
объект). Интерфейс Element реализуется только теми узлами в дереве DOM, которые представляют элементы в документе HTML (узлы сnodeType
=== 1).источник
И вот что происходит в Firefox 33 и Chrome 38:
HTML:
Js:
Так:
nodeType
для получения типа узла:nodeName
разрывы дляnodeType === 1
tagName
дляnodeType === 1
источник
nodeName
сломаться дляnodeType === 1
»?