Sự khác nhau giữa $('this')[0].nodeName
và $('this')[0].tagName
là gì?Sự khác biệt giữa .tagName và .nodeName
Trả lời
This là giải thích khá tốt về sự khác biệt giữa hai loại.
Added văn bản từ bài viết:
tagName
vànodeName
đều tính Javascript hữu ích cho kiểm tra tên của một phần tử html. Đối với hầu hết các mục đích, hoặc là làm tốt nhưng nodeName được ưu tiên nếu bạn chỉ hỗ trợ A-grade trình duyệt và thẻName được ưu tiên nếu bạn định hỗ trợ IE5.5 là .Có hai vấn đề với
tagName
:
- Trong tất cả các phiên bản của trình duyệt IE, tagname trả
!
khi kêu gọi một nút bình luận- Đối với các nút văn bản, tagname trả
undefined
trong khi nodeName trả#text
nodeName
có bộ riêng của mình là issues nhưng chúng ít nghiêm trọng hơn:
- IE 5.5 trả về
!
khi được gọi trên nút nhận xét. Điều này ít độc hại hơn tagName bị hành vi này trên tất cả phiên bản của IE- IE 5.5 không hỗ trợ nodeName cho phần tử
document
hoặc cho thuộc tính. Đây không phải là mối quan tâm đối với hầu hết các mục đích thực tế nhưng cần lưu ý trong bất kỳ trường hợp nào- Konqueror bỏ qua các nút nhận xét khi sử dụng thuộc tính này. Nhưng sau đó một lần nữa, Konqueror, cùng với IE 5.5 không phải là một A-grade browser
Vì vậy, cho các mục đích thực tế nhất dính vào
nodeName
do hỗ trợ cho một phạm vi rộng lớn hơn của kịch bản và có khả năng tốt hơn về phía trước tương thích. Chưa kể rằng nó không nấc cục trên một chú thích nút, có xu hướng leo vào mã không báo trước. Đừng lo lắng về IE 5.5 hoặc Konqueror khi thị phần của họ gần 0%.
điều tốt bạn đã sao chép nó vì trang web đã chết ngay bây giờ. –
Các tagName
property có nghĩa là đặc biệt cho nút phần tử (loại 1 nút) để có được những loại yếu tố.
Có một số other types of nodes cũng như (nhận xét, thuộc tính, văn bản, v.v.). Để lấy tên của bất kỳ loại nút nào khác nhau, bạn có thể sử dụng nodeName
property.
Khi sử dụng nodeName
chống lại một nút yếu tố, bạn sẽ nhận được tên thẻ của nó, do đó, hoặc thực sự có thể được sử dụng, mặc dù bạn sẽ nhận được khi sử dụng better consistency between browsersnodeName
.
Đọc về các thuộc tính đó trong thông số Lõi DOM.
nodeName
là một tài sản được xác định trong giao diện Node
http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-F68D095
tagName
được một tài sản được xác định trong giao diện Yếu tố
http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-104682815
btw giao diện Node được thực hiện bởi tất cả các nút trong cây DOM (bao gồm cả chính đối tượng document
). Giao diện Element chỉ được thực hiện bởi các nút trong cây DOM đại diện cho các phần tử trong một tài liệu HTML (các nút có nodeType
=== 1).
Và đây là những gì xảy ra trên Firefox 33 và 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
Vì vậy:
- chỉ sử dụng
nodeType
để nhận loại nút:nodeName
phá vỡ chonodeType === 1
- chỉ sử dụng
tagName
chonodeType === 1
- 1. Sự khác biệt giữa $ (...) và `...`
- 2. Sự khác biệt giữa. và #
- 3. Sự khác biệt giữa $ * và $ @
- 4. Sự khác biệt giữa ". +" Và ". +?"
- 5. Sự khác biệt giữa "**/* /" và "** /"?
- 6. Sự khác biệt giữa = và: =
- 7. Xương sống 0.9.9: Sự khác biệt giữa listenTo và trên
- 8. Sự khác biệt về sự khác biệt giữa Matplotlib giữa Agg và Cairo
- 9. Sự khác biệt giữa Html.RenderAction và Html.Action
- 10. Sự khác biệt giữa cookie và phiên?
- 11. Sự khác biệt giữa '.' và "." trong java
- 12. Sự khác biệt giữa SimpleDB và S3
- 13. C++ - Sự khác biệt giữa (*). và ->?
- 14. Sự khác biệt giữa offsetHeight và clientHeight
- 15. Sự khác biệt giữa RDLC và SSRS
- 16. Sự khác biệt giữa "\ n" và Environment.NewLine
- 17. Sự khác biệt giữa qt và PyQt4
- 18. Sự khác biệt giữa AForge và OpenCV
- 19. Sự khác biệt giữa toFixed() và toPrecision()?
- 20. sự khác biệt giữa cacao và cocoatouch
- 21. Sự khác biệt giữa smtpClient.send() và smtpClient.SendAsync()?
- 22. Sự khác biệt giữa window.location.host và window.location.hostname
- 23. Sự khác biệt giữa DTLS và TLS
- 24. Sự khác biệt giữa Mealy và Moore
- 25. sự khác biệt giữa createRfcommSocketToServiceRecord và createRfcommSocket
- 26. Sự khác biệt giữa Arrays.sort() và Arrays.parallelSort()
- 27. sự khác biệt giữa orm và pdo
- 28. Sự khác biệt giữa nproc và ulimit?
- 29. Sự khác biệt giữa apc_add và apc_store?
- 30. Sự khác biệt giữa mb_substr và substr
Câu hỏi này là chi tiết của một câu hỏi dom vì nó không phải là cụ thể cho jquery. – Greg