Alguém pode me explicar da forma mais simples possível, qual é a diferença entre o DOMN clássico do pai e o recém-introduzido no Firefox 9 parentElement
javascript
firefox
dom
shabunc
fonte
fonte
Respostas:
parentElement
é novo no Firefox 9 e no DOM4, mas está presente em todos os outros principais navegadores há muito tempo.Na maioria dos casos, é o mesmo que
parentNode
. A única diferença ocorre quando o nóparentNode
não é um elemento. Se sim,parentElement
énull
.Como um exemplo:
Desde que o
<html>
elemento (document.documentElement
) não tem um pai que é um elemento,parentElement
énull
. (Existem outros casos, mais improváveis, ondeparentElement
poderia estarnull
, mas você provavelmente nunca os encontrará.)fonte
parentElement
era uma coisa proprietária do IE; Acredito que outros navegadores da época (por exemplo, Netscape) sejam compatíveis,parentNode
mas nãoparentElement
. (Obviamente, uma vez que eu mencionei Netscape, eu estou falando de caminho de volta para IE5 e anteriores ...)documentfragment.firstChild.parentElement === null
circle
interno ag
), no IE,parentElement
será indefinido eparentNode
será o que você está procurando. :(No Internet Explorer,
parentElement
é indefinido para elementos SVG, enquantoparentNode
está definido.fonte
parentElement
não está sendo implementado paraNode
é bem conhecido ( developer.mozilla.org/en-US/docs/Web/API/Node/… ), mas paraSVGElement
? Também não pude reproduzir issodocument.createElement('svg').parentElement
no IE 11.737.17763.0. Talvez isso tenha sido corrigido enquanto isso?Use
.parentElement
e você não pode dar errado desde que não esteja usando fragmentos de documento.Se você usar fragmentos de documento, precisará
.parentNode
:Além disso:
Aparentemente, o
<html>
's.parentNode
links para o documento . Isso deve ser considerado um processo de decisão, pois os documentos não são nós, pois os nós são definidos para serem contidos por documentos e os documentos não podem ser contidos por documentos.fonte
Assim como em nextSibling e nextElementSibling , lembre-se de que as propriedades com "elemento" em seu nome sempre retornam
Element
ounull
. Propriedades sem podem retornar qualquer outro tipo de nó.fonte
Há mais uma diferença, mas apenas no Internet Explorer. Isso ocorre quando você mistura HTML e SVG. se o pai for o 'outro' desses dois, .parentNode fornecerá o pai, enquanto .parentElement fornecerá indefinido.
fonte
undefined
não énull
.