$('this')[0].nodeName
和$('this')[0].tagName
之間的區別是什麼?.tagName和.nodeName之間的區別
回答
This對兩者之間的區別是一個很好的解釋。從文章
添加文字:
tagName
和nodeName
都是有用的JavaScript屬性 檢查HTML元素的名稱。對於大多數用途,如果您僅支持A級 瀏覽器,並且如果您打算支持IE5.5作爲 ,則首選 會更好,但nodeName是首選。有兩個問題與
tagName
:
- 在IE瀏覽器的所有版本,註釋節點
- 對於文本節點上調用時的tagName返回
!
,標籤名返回undefined
而節點名稱返回#text
nodeName
有自己的一套issues,但它們不太嚴重:
- 在註釋節點上調用時,IE 5.5返回
!
。這比起在之間遭遇此行爲的tagName危害更小全部 版本的IE- IE 5.5不支持
document
元素的nodeName或屬性。這兩者都不應該成爲大多數實用的問題,但在任何情況下都應牢記- 當使用此屬性時,Konqueror會忽略註釋節點。但話又說回來,Konqueror中,與IE 5.5一起不是A-grade browser
所以最實用的目的堅守
nodeName
由於其支持 範圍更廣的情景和潛在的更好的向前兼容性 。更不用說,它不會在評論 節點上打嗝,這有一種傾向於未經宣佈的代碼。因爲它們的市場份額接近0%,所以不要擔心關於IE 5.5或Konqueror的 。
你複製它的好東西,因爲該網站現在已經死了。 – 2016-07-08 10:49:10
tagName
property爲元素節點(1型節點)具體目的是讓元件的類型。
還有幾個other types of nodes(評論,屬性,文本等)。要獲取各種節點類型的名稱,可以使用nodeName
property。
當使用nodeName
針對元素節點,你會得到它的標籤名,這樣無論是真的可以使用,但是你會使用nodeName
時得到better consistency between browsers。
閱讀關於DOM核心規範中的那些屬性。
nodeName
是在Node接口
http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-F68D095
tagName
定義的屬性在Element接口
http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-104682815
順便說一句節點接口是由在DOM樹(每一個節點中實現所定義的屬性包括document
對象本身)。元素接口僅由DOM樹中代表HTML文檔中元素的節點(具有nodeType
=== 1的節點)實現。
而且這是在Firefox 33和Chrome 38會發生什麼:
HTML:
<div class="a">a</div>
JS:
node = e
node.nodeType === 1
node.nodeName === 'DIV'
node.tagName === 'DIV'
node = e.getAttributeNode('class')
node.nodeType === 2
node.nodeName === 'class'
node.tagName === undefined
node = e.childNodes[0]
node.nodeType === 3
node.nodeName === '#text'
node.tagName === undefined
所以:
- 只使用
nodeType
來獲取節點類型:nodeName
打破了nodeType === 1
- 只使用
tagName
爲nodeType === 1
- 1. '+ ='和'= +'之間的區別?
- 2. {!!之間的區別!!}和{{}}
- 3. ==和case之間的區別?
- 4. '#','%'和'$'之間的區別
- 5. | =和^ = css之間的區別
- 6. 「%〜dp0」和「。\」之間的區別?
- 7. .eq之間的區別。和==
- 8. ==和.equals()之間的區別?
- 9. `%in%`和`==`之間的區別
- 10. SPFile和PublishingPage類別之間的區別
- 11. System.Timers.Timer Enabled = true和.Start()之間的區別Enabled = true和.Start()之間的區別
- 12. NSthread和NStimer和NSNotifcation之間的區別?
- 13. Java和C#和.NET之間的區別
- 14. sys.log()和console.log()和console.error()之間的區別?
- 15. $ .ajax()和$ .get()和$ .load()之間的區別
- 16. javascript中的/ * * /和//之間的區別
- 17. python中的[]和[,,]之間的區別
- 18. QWidget的setStyleSheet和QApplication之間的區別
- 19. CKeditor的getHtml()和getData()之間的區別
- 20. make中的「$(shell ...)」和「$$(...)」之間的區別
- 21. C中的/ +和+之間的區別?
- 22. Alamofire的responseJSON和responseData之間的區別
- 23. WordPress的:site_id和blog_id之間的區別?
- 24. '|'之間的區別和 '+' 的位操作
- 25. 春季的/ **和/ *之間的區別
- 26. Satchmo的local_settings.py和settings.py之間的區別
- 27. String.Compare和CultureInfo的CompareInfo之間的區別
- 28. XMLReader.Create()和新的XMLTextReader()之間的區別
- 29. AppWidgetProvider的onDisabled()和onDeleted()之間的區別
- 30. Request.Cookies和Response.Cookies之間的區別
這個問題更是一個DOM問題的,因爲它不是具體到jQuery的。 – Greg 2011-02-02 19:02:38