Может кто-нибудь объяснить мне как можно проще, в чем разница между классическим DOM parentNode и недавно представленным в Firefox 9 parentElement?
javascript
firefox
dom
shabunc
источник
источник
Ответы:
parentElement
является новым для Firefox 9 и DOM4, но он присутствовал во всех других основных браузерах целую вечность.В большинстве случаев это так же, как
parentNode
. Единственная разница возникает, когда узелparentNode
не является элементом. Если так, тоparentElement
естьnull
.Например:
Так как
<html>
элемент (document.documentElement
) не имеет родителя, который является элементом,parentElement
естьnull
. (Существуют и другие, более маловероятные случаи, когда ониparentElement
могут бытьnull
, но вы, вероятно, никогда их не встретите.)источник
parentElement
был собственностью IE; Я считаю, что другие браузеры в то время (например, Netscape) поддерживали,parentNode
но нетparentElement
. (Очевидно, учитывая то, что я упомянул Netscape, я говорю об обратном пути к IE5 и более ранним версиям ...)documentfragment.firstChild.parentElement === null
circle
внутри ag
) в IEparentElement
он будет неопределенным иparentNode
будет тем, что вы ищете. :(В Internet Explorer
parentElement
не определено для элементов SVG, тогдаparentNode
как определено.источник
parentElement
что не внедряется дляNode
( developer.mozilla.org/en-US/docs/Web/API/Node/… ), но дляSVGElement
? Я также не мог воспроизвести этоdocument.createElement('svg').parentElement
в IE 11.737.17763.0. Это было возможно исправлено в это время?Используйте,
.parentElement
и вы не ошибетесь, если не используете фрагменты документа.Если вы используете фрагменты документа, то вам необходимо
.parentNode
:Также:
По- видимому,
<html>
«S.parentNode
ссылки на документ . Это следует рассматривать как этап принятия решения, поскольку документы не являются узлами, поскольку узлы определены как содержащиеся в документах, а документы не могут содержаться в документах.источник
Как и в случае с nextSibling и nextElementSibling , просто запомните, что свойства с именем «element» всегда возвращают
Element
илиnull
. Свойства без могут возвращать любой другой вид узла.источник
Есть еще одно отличие, но только в Internet Explorer. Это происходит, когда вы смешиваете HTML и SVG. если родитель является «другим» из этих двух, то .parentNode дает родителя, в то время как .parentElement дает неопределенное.
источник
undefined
нетnull
.