.tagName 和 .nodeName 之间的区别
2022-08-30 03:01:54
和 有什么区别?$('this')[0].nodeName
$('this')[0].tagName
和 有什么区别?$('this')[0].nodeName
$('this')[0].tagName
tagName
属性专门用于元素节点(类型 1 节点)以获取元素的类型。
还有几种其他类型的节点(注释,属性,文本等)。若要获取任何各种节点类型的名称,可以使用 nodeName
属性。
在对元素节点使用时,您将获得其标记名称,因此可以真正使用其中任何一个,尽管在使用 时,浏览器之间的一致性会更好。nodeName
nodeName
这是对两者之间差异的一个很好的解释。
从文章中添加的文本:
tagName
并且都是用于检查 html 元素名称的有用的 Javascript 属性。对于大多数目的,任何一个都可以,但是如果您仅支持A级浏览器,则首选nodeName;如果您打算支持IE5.5,则首选tagName。nodeName
有两个问题:
tagName
- 在所有版本的 IE 中,在注释节点上调用时返回 tagName
!
- 对于文本节点,tagName 返回,而 nodeName 返回
undefined
#text
nodeName
有自己的一系列问题,但它们不那么严重:
- IE 5.5 在注释节点上调用时返回。这比tagName危害小,tagName在所有版本的IE中都遭受这种行为的影响。
!
- IE 5.5 不支持元素或属性的 nodeName。对于大多数实际目的来说,这些都不应该是一个问题,但无论如何都应该牢记在心
document
- 使用此属性时,Konqueror 会忽略注释节点。但话又说回来,Konqueror和IE 5.5都不是A级浏览器。
因此,对于大多数实际目的,由于其支持更广泛的场景和潜在的更好的前向兼容性,因此可以坚持使用。更不用说它不会在注释节点上打嗝,注释节点倾向于在没有通知的情况下潜入代码。不要担心IE 5.5或Konqueror,因为它们的市场份额接近0%。
nodeName