Qual è la differenza tra $('this')[0].nodeName
e $('this')[0].tagName
?Differenza tra .tagName e .nodeName
risposta
This è una spiegazione abbastanza buona della differenza tra i due.
Aggiunto il testo dall'articolo:
tagName
enodeName
sono entrambi utili proprietà JavaScript per controllo il nome di un elemento HTML. Per la maggior parte degli scopi, lo sarà , ma nodeName è preferibile se si supportano solo i browser di livello A e tagName è preferibile se si intende supportare IE5.5 come .Ci sono due problemi con
tagName
:
- In tutte le versioni di IE, tagName restituisce
!
quando viene chiamato su un commento nodo- Per i nodi di testo, tagName ritorna
undefined
mentre nodeName restituisce#text
nodeName
ha il proprio set di issues ma sono meno severi:
- IE 5.5 restituisce
!
quando viene chiamato su un nodo di commento. Questo è meno dannoso di tagName che soffre di questo comportamento di tutti tutte versioni di IE- IE 5.5 non supporta Nomenodo per l'elemento
document
o per gli attributi. Nessuno di questi dovrebbe essere un problema per la maggior parte degli aspetti pratici , ma deve essere tenuto presente in ogni caso- Konqueror ignora i nodi di commento quando si usa questa proprietà. Ma poi di nuovo, Konqueror, insieme a IE 5.5 non è un A-grade browser
Così, per scopi più pratici attaccano a
nodeName
grazie al suo sostegno per una vasta gamma di scenari e potenzialmente migliore di avanzare compatibilità. Per non parlare del fatto che non si tratta di un nodo di commento , che ha la tendenza a insinuarsi nel codice senza preavviso. Non preoccuparti di su IE 5.5 o Konqueror dato che la loro quota di mercato è vicina allo 0%.
buona cosa l'hai copiato perché il sito è morto ora. –
Il tagName
property è significato specificamente per nodi elemento (tipo 1 nodi) per ottenere il tipo di elemento .
Ci sono diversi other types of nodes (commento, attributo, testo, ecc.). Per ottenere il nome di uno dei vari tipi di nodi, è possibile utilizzare nodeName
property.
Quando si utilizza nodeName
contro un nodo elemento, si otterrà il nome tag, quindi o potrebbe davvero essere utilizzato, anche se si otterrà better consistency between browsers quando si utilizza nodeName
.
Leggi queste proprietà nelle specifiche del DOM Core.
nodeName
è una proprietà definita nell'interfaccia Node
http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-F68D095
tagName
è una proprietà definita nell'interfaccia Elemento
http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-104682815
btw l'interfaccia Node è implementata da ogni nodo dell'albero DOM (incluso lo stesso oggetto document
). L'interfaccia Element è implementata solo da quei nodi nell'albero DOM che rappresentano elementi in un documento HTML (nodi con nodeType
=== 1).
E questo è ciò che accade su Firefox 33 e 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
Quindi:
- utilizzare solo
nodeType
a ottenere il tipo di nodo:nodeName
rompe pernodeType === 1
- utilizzare solo
tagName
pernodeType === 1
- 1. jquery nodename restituito undefined
- 2. php DOMDocument proprietà nodeName che restituisce '#text' con il nodeName
- 3. Backbone 0.9.9: Differenza tra listenTo e su
- 4. La differenza tra $ * e $ @
- 5. Differenza tra $ # e $ {# @}
- 6. Differenza tra. e #
- 7. MySQL: Differenza tra ",", "e"
- 8. Differenza tra "o" e "||"
- 9. Differenza tra unwrapObservable e()
- 10. Differenza tra oggetto e *?
- 11. Differenza tra "**/* /" e "** /"?
- 12. Differenza tra jquery e $
- 13. CMake: differenza tra $ {} e "$ {}"
- 14. Differenza tra ". +" E ". +?"
- 15. VBA: Differenza tra & e +
- 16. Differenza tra numpy.logical_and e &
- 17. Differenza tra | = e^= css
- 18. Differenza tra `% in%` e `` ==
- 19. Differenza tra Dizionario e Hashtable
- 20. Differenza tra SCM e SVN
- 21. differenza tra RDLC e SSRS
- 22. Differenza tra REMOTE_HOST e REMOTE_ADDR
- 23. Differenza tra "\ n" e Environment.NewLine
- 24. Differenza tra QSharedPointer e QSharedDataPointer?
- 25. Differenza tra toFixed() e toPrecision()?
- 26. Differenza tra strncpy e memcpy?
- 27. Differenza tra crittografia e hashing
- 28. Differenza tra Assembly.CreateInstance e Activator.CreateInstance?
- 29. Differenza tra coredata e sqlite
- 30. Differenza tra Html.RenderAction e Html.Action
Questa domanda è più di una domanda Dom, perché non è specifico per jQuery. – Greg