Событие click должно проходить через все элементы, занимающие это пространство, верно?
Событие click (или любое другое событие) будет проходить только через предков DOM элемента. Положение элемента не учитывается, равно как и положение, перекрывающееся с другим элементом во время всплытия события.
В этом случае, поскольку inner2
находится в той же ячейке, что и inner1
, и inner2
ставится после inner1
в DOM, inner2
будет на вершине inner1
. Таким образом, нажатие на эту ячейку приводит к отправке события на inner2
. Затем, чтобы увидеть, какие другие элементы видят событие во время пузырения, посмотрите на предков inner2
:
<div id="outer">
<div id="inner1">
</div>
<div id="inner2">
</div>
</div>
Но его предками являются только #outer
(и document.body
, и document.documentElement
). inner1
не является предком, и событие было отправлено в inner2
, поэтому событие не всплывает через inner1
.
Это описано в вашей ссылке MDN :
В фазе пузырьков:
Браузер проверяет, есть ли на элементе, на который фактически был нажат, обработчик события onclick, зарегистрированный в фазе пузырьков. и запускает его, если так.
Затем он переходит к следующему элементу непосредственного предка и делает то же самое, затем к следующему и так далее до оно достигает элемента.