renovations
This commit is contained in:
parent
19d9078ca3
commit
0d67d5be7f
42 changed files with 1047 additions and 40 deletions
|
@ -12,7 +12,7 @@
|
|||
|
||||
В примере ниже вы можете наглядно посмотреть события `mouseover/out`, возникающие на всех элементах.
|
||||
|
||||
[example src="mouseoverout" height=220]
|
||||
[codetabs src="mouseoverout" height=220]
|
||||
|
||||
Можно заметить, что в некоторых случаях значение `relatedTarget` может быть `null`. Это вполне нормально и означает, что мышь пришла из-за пределов окна (или ушла за окно).
|
||||
|
||||
|
@ -38,7 +38,7 @@
|
|||
|
||||
А еще попробуйте зайти курсором мыши на красный `div` и потом быстро вывести мышь из него куда-нибудь сквозь зеленый. Если движение мыши достаточно быстрое, то родительский элемент будет проигнорирован.
|
||||
|
||||
[example height=360 src="mouseoverout-fast"]
|
||||
[codetabs height=360 src="mouseoverout-fast"]
|
||||
|
||||
|
||||
Важно иметь в виду эту особенность событий, чтобы не написать код, который рассчитан на последовательный проход над элементами.
|
||||
|
@ -58,7 +58,7 @@
|
|||
|
||||
Зайдите на синий элемент, а потом переведите мышь на красный -- и наблюдайте за событиями:
|
||||
|
||||
[example height=360 src="mouseoverout-child"]
|
||||
[codetabs height=360 src="mouseoverout-child"]
|
||||
|
||||
<ol>
|
||||
<li>При заходе на синий -- на нём сработает `mouseover [target: blue]`.</li>
|
||||
|
@ -91,7 +91,7 @@
|
|||
|
||||
Вы можете увидеть, как они работают проведя курсором над голубым `DIV'ом` ниже. Обработчик стоит только на внешнем, синем элементе. Обратите внимание -- лишних событий при переходе на красного потомка нет!
|
||||
|
||||
[example height=340 src="mouseleave"]
|
||||
[codetabs height=340 src="mouseleave"]
|
||||
|
||||
## Делегирование -- проблема mouseenter/leave
|
||||
|
||||
|
@ -103,7 +103,7 @@
|
|||
|
||||
Это легко видеть в примере ниже: обработчики `mouseenter/leave` стоят на `<table>` и сработают при входе-выходе из таблицы, получить из них какую-то информацию о переходах по её ячейкам не представляется возможным:
|
||||
|
||||
[example height=480 src="mouseleave-table"]
|
||||
[codetabs height=480 src="mouseleave-table"]
|
||||
|
||||
Не беда -- воспользуемся `mouseover/mouseout`.
|
||||
|
||||
|
@ -113,7 +113,7 @@
|
|||
|
||||
Получится так:
|
||||
|
||||
[example height=450 src="mouseenter-mouseleave-delegation"]
|
||||
[codetabs height=450 src="mouseenter-mouseleave-delegation"]
|
||||
|
||||
В этом примере код обработчиков выглядит так:
|
||||
|
||||
|
@ -139,7 +139,7 @@ table.onmouseout = function(event) {
|
|||
|
||||
Детали кода вы можете посмотреть в примере ниже, который демонстрирует этот подход:
|
||||
|
||||
[example height=450 src="mouseenter-mouseleave-delegation-2"]
|
||||
[codetabs height=450 src="mouseenter-mouseleave-delegation-2"]
|
||||
|
||||
Попробуйте по-разному, быстро или медленно заходить и выходить в ячейки таблицы. Обработчики `mouseover/mouseout` стоят на `table`, но при помощи делегирования корректно обрабатывают вход-выход.
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue